2016-07-25 12 views
1

次のデータ(ddply関数から返されます)からグループ化された棒グラフを作成しようとしています.x軸に(2つのサイトのそれぞれに対して)4つのCWD変数があり、y軸が平均です。ggplot関数とaes関数を使用してRでグループ化された棒グラフを作成するにはどうすればよいですか?

私のコードは次のとおりです。

library(plyr) 
library(reshape2) 
library(ggplot2) 

ddply(data, c("Site","Plot","Cover"), summarise, mean=mean(Height), sd=sd(Height), 
    sem=sd(Height)/sqrt(length(Height))) 

BranchSize <- ddply(data, c("Site","CWD"), summarise, mean=mean(Volume), 
    sd=sd(Volume), sem=sd(Volume)/sqrt(length(Volume))) 

をし、それがこのテーブルを返します。このテーブルは既にデータフレームですか、またはそれを処理するには1つにする必要がありますか?

Site CWD  mean   sd  sem 
1 High Bark 975.7273 2603.077 554.9780 
2 High Branch 36827.7735 107668.064 13056.6706 
3 High Cage 116041.4286 154934.888 58559.8832 
4 High Log 73463.3636 121054.372 25808.8788 
5 Low Bark  40.0000   NA   NA 
6 Low Branch 1323.8280 2304.571 595.0377 
7 Low Cage 101.5000   NA   NA 
8 Low Log 102600.0000   NA   NA 

は、このコードを使用して:私は、このコマンドを実行すると

limits <- aes(ymax = BranchSize$mean + BranchSize&se, 
    ymin=BranchSize$mean - BranchSize&se) 
CWDVol<-ggplot(data = BranchSize, 
    aes(x = factor(CWD), y = mean, fill = factor(Site))) 
CWDVol 

、私のプロットが表示されますが、何のバーはありません。

CWDVol + geom_bar(stat = "identity", position_dodge(0.9)) + 
    geom_errorbar(limits, position = position_dodge(0.9), width = 0.25) + 
    labs(x = "CWD Type", y = "Average Volume") + 
    ggtitle("Average CWD Size in each Site") + 

    scale_fill_discrete(name = "Site") 

私はこのエラーを得続ける:

は、その後、私はこの実行すると、「エラー:マッピングaes()aes_()によって作成されなければならない」と

は、任意のヒントをいただければ幸いです。

+2

は '' statに=「カウント」してみていますか? – Jimbou

+0

'geom_bar'に' position = position_dodge(0.9) 'を渡し、' limits'でこれをしました: 'BranchSize $ se'、' se'と呼ばれる変数はありません。また、 'BranchSize $'を含める必要はありません。 – Sumedh

+0

ありがとうございます。私はstatを "count"に変更し、seをsemに変更してエラーを修正しましたが、まだ動作しません。 CWDVolを実行すると、棒なしのグラフが生成されます。 – Dominique

答えて

2

TL; DRあなたはposition引数の名前を残し、そうgeom_barposition_dodge(0.9)mapping引数だったと仮定しました。一度あなたはすべてがうまく動作するように修正します。

BranchSize <- read.table(header=TRUE,text=" 
Site CWD  mean   sd  sem 
High Bark 975.7273 2603.077 554.9780 
High Branch 36827.7735 107668.064 13056.6706 
High Cage 116041.4286 154934.888 58559.8832 
High Log 73463.3636 121054.372 25808.8788 
Low Bark  40.0000   NA   NA 
Low Branch 1323.8280 2304.571 595.0377 
Low Cage 101.5000   NA   NA 
Low Log 102600.0000   NA   NA") 

library(ggplot2) 
limits <- aes(ymax=mean+sem, ymin=mean-sem) 
CWDVol <- ggplot(data=BranchSize, 
       aes(x=factor(CWD),y=mean,fill=factor(Site))) 
CWDVol + geom_bar(stat="identity",position=position_dodge(0.9))+ 
    geom_errorbar(limits, position = position_dodge(0.9), width = 0.25) + 
    labs(x = "CWD Type", y = "Average Volume") + 
    ggtitle("Average CWD Size in each Site")+ 
    scale_fill_discrete(name = "Site")+ 
    scale_y_log10() 

いくつかの他の提案:

  • がマッピング内$を使用していない、それだけでトラブル
  • 多分信頼区間のために+/- 2 SEM(または1.96 SEM)を使用するようになりますか?以下のように(すべての視聴者は、おそらくそう頭でこの変換をしようとします。)

コードの結果が enter image description here

+0

ありがとうございました!ほんとうにありがとう。 最後に、各バーの上にサンプルサイズ(例:n = 2)を追加するにはどうすればよいですか? text()を唯一の方法で使用しています(手動でラベルを追加します)。私は長さ()を使用してサンプルサイズを抽出した – Dominique

+0

スタックオーバーフローやウェブのような答えがたくさんあります。見つけられない場合は、別の質問を投稿してください... –

関連する問題