我想将时间设为hh:min
或hh:min:ss
。但是,由于我使用chron包(它将时间值恢复为一天的一小部分),ggplot不知道如何自动选择类型时间对象的比例,因此它使用连续绘制数据。一些数据样本:
> x$Time
[1] 00:00:00 00:15:00 00:30:00 00:45:00 01:00:00 01:15:00 01:30:00 01:45:00 02:00:00
[10] 02:15:00 02:30:00 02:45:00 03:00:00 03:15:00 03:30:00 03:45:00 04:00:00 04:15:00
> x$Total
[1] 1 4 0 0 4 0 0 0 0 0 0 0 0 0 0 0
[17] 0 0 0 0 2 0 0 0 0 0 0 0 2 0 7 9
[33] 27 87 143 251 1263 1797 2074 2171 16 2542 2924 3194 3185 3274 3282 3362
ggplot(aes(x = x$Hora, y = x$Sum_C.Total), data = x) + geom_point()
这给出了Y轴工作的图形,但X轴是从0到1的值(因为我的所有时间数据都是从00:00:00
到24:00:00
)。如何将时间值中的这一小部分转换为ggplot可以将其绘制为hh:mm:ss
或hh:mm
?
PS:我尝试过此解决方案(plot chron times as hours from origin),但它不允许我使用"%02d:00"
格式。
答案 0 :(得分:0)
我不知道以下是否是你想要的。如果不是,请这样说,我会删除这个答案。
首先在您的Time
向量中阅读并填写一些Total
。
Time <- scan(what = character(), text =
"00:00:00 00:15:00 00:30:00 00:45:00 01:00:00 01:15:00 01:30:00 01:45:00 02:00:00
02:15:00 02:30:00 02:45:00 03:00:00 03:15:00 03:30:00 03:45:00 04:00:00 04:15:00")
set.seed(1)
Total <- cumsum(rnorm(length(Time)))
现在是图表。我将创建一个data.frame
列,其中包含一个类"times"
,然后将其设置为更短,没有秒数。
library(chron)
Time <- chron(times. = Time)
x <- data.frame(Hora = Time, Sum_C.Total = Total)
Hr <- sub(":00$", "", as.character(x$Hora))
ggplot(data = cbind(x, Hr), aes(x = Hr, y = Sum_C.Total)) +
geom_point()
在我的屏幕显示器上,我必须最大化图形窗口,以便x轴标签不会叠加。