2013-02-21 2 views
2

gplot2 그래프에 수직선을 추가하는 데 문제가 있습니다.시간을 사용하여 ggplot2에 vline 추가하기

예제 데이터 프레임은 다음과 같습니다.

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를 사용하는 방법에 대한 일반적으로 웹에 대한 토론의 꽤 많이있는 것 같습니다. 내 코드를 수정하는 데 가본 적이 있지만 지금까지별로 운이 좋지 않습니다.

예를 들어, 21시에 오후 2시에 수직선이 필요합니다.

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

아무에게도 어떻게 작동시킬 수 있습니까?

+1

는'as.Date' 그냥 날짜 부분이 아닌 '% H를 유지합니다. – Arun

답변

6

as.Date()as.POSIXct()으로 대체해야합니다. 날짜가 아닌 시간도 필요하기 때문입니다 (기능 as.Date()은 날짜 부분 만 나타냄).

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

당신은 두 사례를 보면 그 차이를 볼 수 있습니다 %의 M : %의 S` 정보

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" 
+0

많은 감사합니다. –

+0

많은 감사. 어쨌든 이것을 좀 더 일반적인 것으로 만들 수 있으며 vline 명령에서 날짜를 없앨 수 있습니까? 나는이 스크립트를 다른 날에 여러 파일에 대해 실행하고 있으므로 vline에 시간을 추가하려고합니다. 이것이 가능한가? –

+0

@ KT_1 geom_vline()의 날짜는 01.01.1970부터 기원으로 계산되므로 필요합니다. 숫자로 변환 할 때. –

관련 문제