40

GGplot2 セミナーhttp://dl.dropbox.com/u/42707925/ggplot2/ggplot2slides.pdfから図を再作成しようとしています。

この場合、例 5 を生成しようとしており、ジッタのあるデータ ポイントが覆い焼きの対象となります。コードを実行すると、ポイントは正しい線を中心に配置されますが、ジッターはありません。

これは、プレゼンテーションから直接のコードです。

set.seed(12345)
hillest<-c(rep(1.1,100*4*3)+rnorm(100*4*3,sd=0.2),
       rep(1.9,100*4*3)+rnorm(100*4*3,sd=0.2))
rep<-rep(1:100,4*3*2)
process<-rep(rep(c("Process 1","Process 2","Process 3","Process 4"),each=100),3*2)
memorypar<-rep(rep(c("0.1","0.2","0.3"),each=4*100),2)
tailindex<-rep(c("1.1","1.9"),each=3*4*100)
ex5<-data.frame(hillest=hillest,rep=rep,process=process,memorypar=memorypar, tailindex=tailindex)
stat_sum_df <- function(fun, geom="crossbar", ...) {stat_summary(fun.data=fun, geom=geom, ...) }

dodge <- position_dodge(width=0.9) 
p<- ggplot(ex5,aes(x=tailindex ,y=hillest,color=memorypar)) 
p<- p + facet_wrap(~process,nrow=2) + geom_jitter(position=dodge) +geom_boxplot(position=dodge)  
p
4

2 に答える 2

68

ggplot2バージョンには、そのような状況のために作られた1.0.0という名前の新しい役職があります。position_jitterdodge()この位置は 内で使用する必要があり、データをかわす変数を示すために 内で使用geom_point()する必要があります。覆い焼きの幅を制御するには、引数を使用する必要があります。fill=aes()dodge.width=

ggplot(ex5, aes(x=tailindex, y=hillest, color=memorypar, fill=memorypar)) +
      facet_wrap(~process, nrow=2) +
      geom_point(position=position_jitterdodge(dodge.width=0.9)) +
      geom_boxplot(fill="white", outlier.colour=NA, position=position_dodge(width=0.9))

ここに画像の説明を入力

于 2014-05-24T10:13:46.327 に答える
39

EDITggplot2バージョン1.0.0を使用したより良い解決策がありposition_jitterdodgeます。@Didzis Elfertsの回答を参照してください。dodge.width覆い焼きの幅を制御し、ジッターの幅を制御することに注意してくださいjitter.width

コードがpdfのグラフをどのように生成したかわかりません。

しかし、このようなことで、あなたが求めているものに近づくことができますか?

tailindexandmemoryparを数値に変換します。それらを一緒に追加します。結果はgeom_jitterレイヤーの x 座標です。もっと効果的な方法がきっとあるはずです。geom_boxplotまた、 と をかわすとgeom_jitter、ジッターなしで、pdf にグラフがどのように生成されるかを確認したいと思います。

library(ggplot2)
dodge <- position_dodge(width = 0.9)
ex5$memorypar2 <- as.numeric(ex5$tailindex) + 
  3 * (as.numeric(as.character(ex5$memorypar)) - 0.2) 

p <- ggplot(ex5,aes(x=tailindex , y=hillest)) +
   scale_x_discrete() +
   geom_jitter(aes(colour = memorypar, x = memorypar2), 
     position = position_jitter(width = .05), alpha = 0.5) +
   geom_boxplot(aes(colour = memorypar), outlier.colour = NA, position = dodge) +
   facet_wrap(~ process, nrow = 2)
p

ここに画像の説明を入力

于 2012-05-08T09:57:55.260 に答える