2

このように、平均値が X および Y エラーバーと共に示されている 2 つのグループの ggplot2 散布図を生成するにはどうすればよいですか?

散布図

これは、セルの 2 つのグループと 3 つのメジャーを含む縮小された例 ( dputdata.frame を再作成するために使用)です。ここまでは単純明快ですが、X と Y の誤差範囲 (+/- sem) でグループ平均を示すポイントを追加したいと思います。dfPeakRisePeakDecay

ggplot2 内でこれを行う方法はありますか、または最初に平均値と sem 値を生成する必要がありますか? この投稿は私の注意を引きますgeom_errorbarhが、続行する最善の方法についてはまだ確信が持てません。

library(ggplot2)

df<-structure(list(Group = c("A", "A", "A", "A", "A", "A", "A", 
"A", "B", "B", "B", "B", "B", "B", "B", "B"), Peak = c(102.975, 
37.805, 64.996, 66.36, 199.354, 7.425, 34.137, 366.59, 10.165, 
14.833, 702.525, 39.086, 8.286, 122.783, 105.762, 37.018), Rise = c(0.346855, 
0.24165, 0.24028, 0.461548, 0.194016, 0.164047, 0.484375, 0.307861, 
0.438538, 0.488083, 0.549423, 0.365448, 0.511551, 0.33596, 0.331467, 
0.270096), Decay = c(1.3874, 1.07407, 1.88787, 2.64408, 1.1462, 
0.615963, 4.04641, 1.48701, 3.61397, 4.1838, 1.92746, 3.64329, 
4.21354, 0.812695, 1.14611, 1.28279)), .Names = c("Group", 
"Peak", "Rise", "Decay"), class = "data.frame", row.names = c(NA, 
-16L))

ggplot(df, aes(Peak, Rise)) + 
  geom_point(aes(colour=Group)) +
  theme_bw(14)

私は次のようなことを試しました:

library(doBy)

sem <- function(x) sqrt(var(x)/length(x))
z<-summaryBy(Peak+Rise+Decay~Group, data=df, FUN=c(mean,sem))
z

値を取得することはできますが、それらを ggplot コードに簡単に (そして柔軟に) 組み込むことは私を打ち負かしています。

4

1 に答える 1

3

私はこれらの種類の要約にplyrを使用する傾向があります。

z <- ddply(df,.(Group),summarise,
            Peak = mean(Peak),
            Rise = mean(Rise),
            PeakSE = sqrt(var(Peak))/length(Peak),
            RiseSE = sqrt(var(Rise))/length(Rise))

ggplot(df,aes(x = Peak,y = Rise)) + 
    geom_point(aes(colour = Group)) + 
    geom_point(data = z,aes(colour = Group)) +
    geom_errorbarh(data = z,aes(xmin = Peak - PeakSE,xmax = Peak + PeakSE,y = Rise,colour = Group,height = 0.01)) + 
    geom_errorbar(data = z,aes(ymin = Rise - RiseSE,ymax = Rise + RiseSE,x = Peak,colour = Group))

ここに画像の説明を入力

クロスバーの高さを手動で微調整しなければならなかったことに少しがっかりしたことを告白します。しかし、考えてみると、それを実装するのはかなり難しいと思います。

于 2012-09-24T19:23:41.190 に答える