使用时间在ggplot2中添加vline

KT_*_*T_1 2 r ggplot2

我在向gplot2图添加垂直线时遇到一些问题.

我的示例数据框如下所示.

set.seed(1234)
df <- data.frame(Date=seq(as.POSIXct("05:00", format="%H:%M"), 
                          as.POSIXct("23:00", format="%H:%M"), by="hours"))
df$Counts <- sample(19)
df <- df[-c(4,7,17,18),]

# generate the groups automatically and plot
idx <- c(1, diff(df$Date))
i2 <- c(1,which(idx != 1), nrow(df)+1)
df$grp <- rep(1:length(diff(i2)), diff(i2))
g <- ggplot(df, aes(x=Date, y=Counts)) + geom_line(aes(group = grp)) + 
  geom_point()
Run Code Online (Sandbox Code Playgroud)

关于堆栈溢出和Web的讨论似乎有很多关于在时间序列上使用vlines的讨论.我已经去纠正我的代码,但到目前为止我没有太多运气.

比方说,我希望在21日下午2点有一条垂直线.

g1 <- g + geom_vline(xintercept=as.numeric(as.Date("2013-02-21 14:00:00")))
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何让这个工作?

Did*_*rts 6

您必须更换as.Date(),as.POSIXct()因为您还需要时间而不仅仅是日期(功能as.Date()仅代表日期部分).

g + geom_vline(xintercept=as.numeric(as.POSIXct("2013-02-21 14:00:00")))
Run Code Online (Sandbox Code Playgroud)

你可以通过查看这两种情况来看出差异:

 as.Date("2013-02-21 14:00:00")
[1] "2013-02-21"

 as.POSIXct("2013-02-21 14:00:00")
[1] "2013-02-21 14:00:00 EET"
Run Code Online (Sandbox Code Playgroud)