将计时时间绘制为距原点的小时数

plot chron times as hours from origin

我有一组计时时间,它是两个时间点之间的时间差。这些值的范围从略微负到略大于 1。Chron 将这些值显示为天数的一部分,因为其中一些值大于 1。

当我在 ggplot 中绘制这些值时,我尝试使用 scale_y_chron() 来正确注释 y 轴,但是 scale_y_chron() 似乎只绘制 24 小时内的时间。有什么方法可以将 00:00 中的轴注释为 HH:MM?

# data:

time_to <- c(0.19305556,0.12083333,0.58402778,0.32986111,0.40486111,
             0.77083333,0.18263889,0.23472222,0.10138889,0.11666667,
             0.47222222,0.14166667,0.15694444,0.24166667,0.16666667,
             0.29166667,0.28194444,0.16875000,0.42777778,0.88750000,
             0.17916667,0.05763889,0.53263889,0.11666667,0.22916667,
             0.75069444,0.98680556,1.29930556,0.78263889,0.73611111,
             0.73958333,1.22708333,0.41319444,0.98402778,1.22500000,
             0.33194444,0.95972222,0.18333333,0.11458333,0.86805556)

# plot:

require(chron)
require(ggplot2)
qplot(y=time_to)

理想情况下,y 轴应表示从 00:00 开始的总小时数,但如果时差大于 24 小时,则默认为天数。

time_to 只是一个数字向量,因此没有理由认为轴会用数字以外的任何东西来标记。如果这些数字表示两个计时日期时间之间的差异,并且我们希望 HH:MM 格式,即使大于 24 小时也使用自定义标签。利用这样一个事实,在 chron 中,一天是 1,所以一小时是 1/24:

library(ggplot2)

hrs <- seq(0, 30, 5)  # 0, 5, 10, ..., 30
qplot(y = time_to) + 
   scale_y_continuous(breaks = hrs/24, labels = sprintf("%02d:00", hrs))