带有日期轴的图上的水平线

时间:2014-04-04 14:30:52

标签: r ggplot2

我正在跟踪我的猫在data.frame中的时间和持续时间:

df <- data.frame(name=c("fluffy", "misterCuddles", "senorEsnuggle"))
df$start=as.POSIXlt(c("2014-04-03 23:57", "2014-04-03 23:31", "2014-04-04 00:02"), tz="EST")
df$duration=c(123, 234, 345)

现在我的df看起来像是:

           name               start duration
1        fluffy 2014-04-03 23:57:00      123
2 misterCuddles 2014-04-03 23:31:00      234
3 senorEsnuggle 2014-04-04 00:02:00      345

我可以这样绘制:

ggplot(df, aes(x=name)) + 
    geom_linerange(aes(ymin=start, ymax=start + duration), size=10)

enter image description here

如何在午夜放置一条水平线,将4月3日从4月4日分开?

当我尝试这个时:

ggplot(df, aes(x=name)) + 
    geom_linerange(aes(ymin=start, ymax=start + duration), size=10) +
    geom_hline(yintercept=as.POSIXlt("2014-04-04 00:00", tz="EST"))

我收到以下错误消息:

Error : Invalid intercept type: should be a numeric vector, a function, or a name of a function

1 个答案:

答案 0 :(得分:2)

适用于yintercept

的数字版本
ggplot(df, aes(x = name)) +
  geom_linerange(aes(ymin = start, ymax = start + duration), size = 10) +
  geom_hline(yintercept = as.numeric(as.POSIXlt("2014-04-04 00:00", tz = "EST")))

enter image description here

PS:我尝试了as.POSIXct版本的&#39; start&#39;和yintercept,但那不起作用。