我正在跟踪我的猫在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)
如何在午夜放置一条水平线,将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
答案 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")))
PS:我尝试了as.POSIXct
版本的&#39; start&#39;和yintercept
,但那不起作用。