11

私はggplot2を初めて使用し、それは素晴らしいことですが、1つのことに問題があります。

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")
4

1 に答える 1

11

これは最も適切なコードではありませんが、あなたが求めているものにいくぶん似ていると思います。

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)

式でプロット

于 2012-07-24T07:52:17.997 に答える