2

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()

時系列で vlines を使用することについて、スタック オーバーフローと Web に関する一般的な議論がかなりあるようです。私は自分のコードを修正しようとしましたが、今のところあまり運がありません。

たとえば、21 日の午後 2 時に垂直線が必要だとします。

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

これを機能させる方法を教えてもらえますか?

4

1 に答える 1

7

日付だけでなく時間も必要なので、に置き換える必要があります(関数as.Date()は日付部分のみを表します)。as.POSIXct()as.Date()

g + geom_vline(xintercept=as.numeric(as.POSIXct("2013-02-21 14:00:00")))

これらの 2 つのケースを見ると、違いがわかります。

 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"
于 2013-02-21T10:48:38.240 に答える