3

facet_grid各日の治療ごとの各グループのリチウムの割合を視覚化するために、グラフを作成しました.

library(ggplot2)
library(Rmisc) 
library(plyr)

mus2 <- summarySE(mus, measurevar="litium", 
                         groupvars=c("treatment", "group", "day"), na.rm = TRUE)

mus2

mus3 <- mus2
mus3$group <- factor(mus3$group)

ms.chl<- ggplot(mus3, aes(x=group, y=litium, fill=treatment)) +
  geom_bar(stat="identity", colour="black") + facet_grid(~day) + theme_bw() 
ms.chl

これで結果:

ここに画像の説明を入力

そのためには、2 つの問題があります。

グループごとのリチウム含有量の適切なエラーバーを作成できません。これを試してみましたが、治療ごとにエラーバーしか表示されません.

ms.chl + geom_errorbar(aes(ymin=litium-se, ymax=litium+se), size=0.5,   
        width=.25,                    
        position=position_dodge(.9)) +
facet_grid(~day)

ここに画像の説明を入力

各グループの合計から誤差範囲を取得したい

その後、私の 2 番目の質問は、グループごとの絶対値と各処理のみのパーセンテージを表すことは可能ですか?

データセット (mus):

litium  group   treatment   day
0.009439528 1   Control day1
0.005115057 1   Control day1
0.009742297 1   Control day1
0.016515625 2   Control day1
0.01074537  2   Control day1
0.016300836 2   Control day1
0.009538339 3   Control day1
0.010609746 3   Control day1
0.008928012 3   Control day1
0.009425325 1   Control + bird  day1
0.00561831  1   Control + bird  day1
0.014622517 1   Control + bird  day1
0.017702439 2   Control + bird  day1
0.010545045 2   Control + bird  day1
0.029109907 2   Control + bird  day1
0.013737568 3   Control + bird  day1
0.015174405 3   Control + bird  day1
0.014583832 3   Control + bird  day1
0.009244079 1   Control day2
0.006591033 1   Control day2
0.007592587 1   Control day2
0.013676745 2   Control day2
0.016208676 2   Control day2
0.017593952 2   Control day2
0.014003037 3   Control day2
0.01163581  3   Control day2
0.011643067 3   Control day2
0.009229506 1   Control + bird  day2
0.006423714 1   Control + bird  day2
0.008653163 1   Control + bird  day2
0.012441379 2   Control + bird  day2
0.0204346   2   Control + bird  day2
0.010017788 2   Control + bird  day2
0.009745063 3   Control + bird  day2
0.00967963  3   Control + bird  day2
0.010291306 3   Control + bird  day2
0.009466604 1   Fence   day2
0.019611081 2   Fence   day2
0.006796444 2   Fence   day2
0.018928695 2   Fence   day2
0.007787736 3   Fence   day2
0.009409897 3   Fence   day2
4

1 に答える 1

6

最初の最も簡単な解決策は、棒グラフを積み重ねるのではなく横に並べることです。次に、コードを変更する必要があるのは、残りのコードをそのまま追加position="dodge"してgeom_bar()実行することだけです。これには、さまざまなバーの高さを直接比較できるという追加の利点があり、バーの中央にエラー バーを配置することを回避できます。

ms.chl<- ggplot(mus3, aes(x=group, y=litium, fill=treatment)) +
  geom_bar(stat="identity", colour="black",position="dodge") + 
  facet_grid(~day) + theme_bw() 
ms.chl + geom_errorbar(aes(ymin=litium-se, ymax=litium+se), size=0.5,   
    width=.25,position=position_dodge(.9)) +
  facet_grid(~day)

ここに画像の説明を入力

積み上げ棒グラフにエラー バーを追加するには、バーが の累積合計を中心にしていることを確認する必要がありlitiumます。このために、cumsum()内で使用できますave()

mus3 <- within(mus3,lit2 <- ave(litium,group,day,FUN=cumsum))

その後、コールしてかわさないときlit2の代わりに使用します。litiumgeom_errorbar()

ms.chl<- ggplot(mus3, aes(x=group, y=litium, fill=treatment)) +
  geom_bar(stat="identity", colour="black") + facet_grid(~day) + theme_bw() 

ms.chl + geom_errorbar(aes(ymin=lit2-se, ymax=lit2+se), size=0.5,   
                       width=.25) + facet_grid(~day)

ここに画像の説明を入力

また、グループの誤差範囲だけが必要な場合は、治療内のグループではなく、グループ全体の誤差を取得する必要がありますが、それをグループ全体に基づく平均に直接追加することはできません。は平均であり、積み上げ棒グラフには平均の合計があるため、 から平均を合計する必要がありますmus3

musgroup <- summarySE(mus, measurevar="litium", 
                      groupvars=c("group", "day"), na.rm = TRUE)

musgroupsum <- ddply(mus3,.(group,day),summarize,lit2 = sum(litium))

mus4 <- merge(musgroup,musgroupsum)

ms.chl<- ggplot() +
  geom_bar(data=mus3, aes(x=group, y=litium, fill=treatment),
           stat="identity", colour="black") + facet_grid(~day) + theme_bw() 

ms.chl + geom_errorbar(data=mus4,aes(x=group,ymin=lit2-se, ymax=lit2+se),
                       size=0.5, width=.25)

ここに画像の説明を入力

ただし、この時点で、少し無意味になり始めます。積み上げ平均はグループ平均ではなく、グループ平均の合計ですが、エラーはグループ平均に対するものです。図を見ると、誤差範囲は本来あるべきよりもはるかに高い位置にあるため、平均値に比べて小さく見えます。あなたが探しているのは、そのグループ平均に対する各処理の寄与を確認できるグループ平均の表現のようです。これを示す 1 つの方法は、バー プロットのサイズを調整して、累積合計が各グループの適切な平均に集中するようにすることです。

mus3 <- within(mus3,lit3 <- ave(litium,group,day,FUN=function(x) x/length(x)))

ms.chl<- ggplot() +
  geom_bar(data=mus3, aes(x=group, y=lit3, fill=treatment),
           stat="identity", colour="black") + facet_grid(~day) +
  theme_bw() + ylab("litium")

ms.chl + geom_errorbar(data=mus4,aes(x=group,ymin=litium-se, ymax=litium+se),
                       size=0.5,width=.25)

ここに画像の説明を入力

于 2015-09-29T13:29:46.340 に答える