作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多次,想在条形图中绘制每次的频率
library(ggplot2)
library(chron)
test <- data.frame(times = c(rep("7:00:00",4), rep("8:00:00",3),
rep("12:00:00",1), rep("13:00:00",5)))
test$times <- times(test$times)
test
times
1 07:00:00
2 07:00:00
3 07:00:00
4 07:00:00
5 08:00:00
6 08:00:00
7 08:00:00
8 12:00:00
9 13:00:00
10 13:00:00
11 13:00:00
12 13:00:00
13 13:00:00
选择binwidth
的值来表示分钟
p <- ggplot(test, aes(x = times)) + geom_bar(binwidth=1/24/60)
p + scale_x_chron(format="%H:%M")
如您所见,x 轴刻度加一小时:
我感觉这与时区有关,但我无法真正确定它:
Sys.timezone()
[1] "CET"
编辑:感谢@shadow 的评论
更新:
如果我首先运行 Sys.setenv(TZ='GMT')
,它会完美运行。问题出在 times()
函数中。我自动将时区设置为 GMT,如果我绘制 x 轴,ggplot 会注意到我的系统时区是 CET,并在绘图上添加一小时。现在,如果我将系统时区设置为 GMT,ggplot 不会增加一个小时。
最佳答案
问题是 times(...)
假设时区是 GMT,然后 ggplot
补偿您的实际时区。这很公平:除非您指定时区,否则时间毫无意义。更大的问题是,似乎不可能告诉 times(...)
实际时区是什么(如果其他人知道如何做到这一点,我很想知道)。
解决方法是使用 POSIXct 并识别您的时区(我的是 EST)。
test <- data.frame(times = c(rep("7:00:00",4), rep("8:00:00",3),
rep("12:00:00",1), rep("13:00:00",5)))
test$times <- as.POSIXct(test$times,format="%H:%M:%S",tz="EST")
p <- ggplot(test, aes(x = times)) + geom_bar(binwidth=60,width=.01)
binwidth=60
为 60 秒。
关于r - 时间数据的ggplot2和chron条形图scale_x_chron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22377913/
我是一名优秀的程序员,十分优秀!