【问题标题】:How to plot chron times in hh:mm?如何以 hh:mm 绘制 chron 时间?
【发布时间】:2018-05-17 14:05:43
【问题描述】:

我正在尝试将 Time 绘制为 hh:minhh: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:sshh:mm

PS:我尝试了这个解决方案 (plot chron times as hours from origin),但它不允许我使用 "%02d:00" 格式。

【问题讨论】:

    标签: r datetime time chron


    【解决方案1】:

    不知道下面是不是你想要的。如果不是,就这么说,我会删除这个答案。

    先读入你的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 轴标签重叠。

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2022-01-03
      • 2023-04-11
      • 2016-03-12
      • 1970-01-01
      • 2023-03-10
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多