2012-07-12 2 views
10

저는 ggplot2를 처음 사용하고 멋졌지만 한 가지 문제가 있습니다.X 축에 날짜가있는 ggplot2의면 처리 된 플롯에 텍스트 추가

저는 1 년에 걸쳐 여러 개의 시계열을 그렸습니다. X 축은 Date 클래스의 변수에서 파생됩니다. 나는 y 축이 독립적 인 열에 7 개의 시계열을 갖도록 음모를 꾸몄습니다. 이 그래픽의 요점은 각 패싯과 상단 패싯의 상관 관계를 비교하는 것입니다.

내가하고 싶은 마지막 사항은 텍스트 (각 패싯과 첫 패싯 사이의 예상 피어슨 상관 관계)를 각 패싯의 오른쪽 위 모서리에있는 플롯에 추가하는 것입니다.

geom_text()은 텍스트의 각 비트마다 x 좌표와 y 좌표가 필요하기 때문에 매우 어려움이 있습니다. X 축이 날짜이고 Y 축이 각 패싯마다 다른 경우 좌표를 어떻게 지정합니까? 다음은 몇 가지 샘플 데이터이고 코드는 당신이 지금까지 무엇을 재현 할 수 있도록 지금까지 가지고

library(ggplot2) 

date <- rep(as.Date(1:365,origin='2011-1-1'),7) 
location <- factor(rep(1:7,365)) 
product <- rep(letters[1:7], each=365) 
value <- c(sample(1:10, size=365, replace=T),sample(1:3, size=365, replace=T), 
      sample(10:100, size=365, replace=T), sample(1:50, size=365, replace=T), 
      sample(1:20, size=365, replace=T),sample(50:100, size=365, replace=T), 
      sample(1:100, size=365, replace=T)) 
dat<-data.frame(date,location,product,value) 

qplot(date, value, data=dat, geom="line", color=location, group=location, 
     main='Time Series Comparison', xlab='Month (2011)',ylab='Value') + 
     facet_grid(product ~ ., scale = "free_y") 
+0

@Andrie 감사! – rnorberg

답변

9

이가 산뜻한 코드가 아닙니다,하지만 난 당신이있어 무엇처럼 약간 생각 후 :

편집에 대한
library(plyr) 

corr_dat<-ddply(dat, .(product), summarise, value=value) 
corr.df<-unstack(corr_dat, value~product) 

corr_plot <- data.frame(date=max(dat$date), 
         label=paste0("rho==",round(cor(corr.df)[,1], 2)), 
         ddply(dat, .(product), summarise, 
          value=(min(value)+max(value))/2)) 

ggplot(dat, aes(x=date, y=value, color=location, group=location)) + 
    geom_line()+ 
    facet_grid(product ~ ., scale = "free_y")+ 
    geom_text(data=corr_plot, aes(x=date, y=value, label=label), 
      colour="black", inherit.aes=FALSE, parse=TRUE) 

Plot with expressions

+0

절대적으로 완벽합니다! 엄청 고마워. 호기심에서'show.guide = FALSE'는 무엇을합니까? – rnorberg

+1

'show.guide = FALSE'는 범례에 나타나는 텍스트를 금지합니다. 색상을 검정으로 설정하면 더 이상 필요하지 않을 수도 있습니다. 나는 그것을 제거 할 것이라고 나는 생각한다. –

관련 문제