0

我正在尝试将 Time 绘制为hh:minor 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:0024:00:00)。如何将一天中的这一部分转换为时间值,以便 ggplot 可以将其绘制为hh:mm:ssor hh:mm

PS:我尝试了此解决方案(将 chron 时间绘制为从原点开始的小时数),但它不允许我使用该"%02d:00"格式。

4

1 回答 1

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 轴标签不重叠。

于 2018-05-17T14:42:49.750 回答