2017-02-12 6 views
1

私は、隣り合わせではなく、2つのバープロットを重ね合わせようとしています。 データは同じデータセットからのものです。 x軸に 'ブロック'、オーバーレイバープロットとして '開始'と '終了'が必要です。私もgeom_bar()で2つのバープロットをオーバーレイする

ggplot(my_data,aes(x=Block,y=Start))+ 
     geom_bar(data=my_data$End, stat="identity",position="identity",...) 

を試してみたggplot2が

数値クラスのデータに対処する方法を知らない:

Block Start  End 
1 P1L  76.80  0.0 
2 P1S  68.87  4.4 
3 P2L  74.00  0.0 
4 P2S  74.28  3.9 
5 P3L  82.22  7.7 
6 P3S  80.82  17.9 

私のスクリプトは

ggplot(data=NULL,aes(x=Block))+ 
    geom_bar(data=my_data$Start,stat="identity",position ="identity",alpha=.3,fill='lightblue',color='lightblue4')+ 
    geom_bar(data=my_data$End,stat="identity",position ="identity",alpha=.8,fill='pink',color='red') 

が、私はエラーを取得しています誰でも私はそれが起こることができる方法を知っていますか?ありがとうございました。

編集:

ドッジオーバーレイバーを取得するにはどうすればよいですか?

私の次の質問は、それが私の元の投稿の反対の問題であるので、私はこの投稿を編集します。

はP.merkle

@私は沿岸のために、すべてのブロックラベルLとS. Lスタンドの平均値を示す4本の棒に私のプロットを変更しなければならなかった、と浅海用S。彼らは、2回の治療のために曝露された:正常および減少した。

私は平均とその標準偏差を計算しました。 私は、それぞれのエラーバーを持つ4つのバーが必要です: ノーマル/リトラル、縮小/リトラル、ノーマル/サブリットラル、縮小/サブリットラル。

問題をプロットすると、沿道のバーと両方の下の小道のバーが重なって表示されます。だから今私はそれらをではなく、と重複させたい! どうすればいいですか?

Zonation Force N mean sd se 1 Litoral Normal 6 0.000000 0.000000 0.000000 2 Litoral Redusert 6 5.873333 3.562868 1.454535 3 Sublitoral Normal 6 7.280000 2.898903 1.183472 4 Sublitoral Redusert 6 21.461667 4.153535 1.695674

私のスクリプトはこれです:結果がある

ggplot(data=cdata,aes(x=newdata$Force,y=newdata$mean))+ 
     geom_bar(stat="identity",position ="dodge", 
       alpha=.4,fill='red', color='lightblue4',width = .6)+ 
     geom_errorbar(aes(ymin=newdata$mean-sd,ymax=newdata$mean+sd), 
         width=.2, position=position_dodge(.9)) 

私は

マイnewdataは、この情報が含まれています...運なしで、position = 'dodge'position = position_dodge(newdata$Force)のすべての種類を試してみました残念ながらthis

エラーバーの時点では、そこには4つのバーがありますが、重なっています。どうしたらいいですか?

答えて

1

あなたの質問には、単純で複雑な答えがあります。

凡例が必要ない場合は、簡単な解決策が役立ちます。

バープロットの横に凡例を表示する場合は、データをワイドフォーマットからロングフォーマットに変換する必要がある、より複雑なソリューションの使用を検討してください。

バリアント1:

ggplot(data=my_data,aes(x=Block))+ 
    geom_bar(aes(y=Start),stat="identity",position ="identity",alpha=.3,fill='lightblue',color='lightblue4') + 
    geom_bar(aes(y=End),stat="identity",position ="identity",alpha=.8,fill='pink',color='red') 

plot without legend

バリアント:伝説がなければ、ワイドフォーマットでデータを保持

あなたは、個々のgeomのレベル(ここでは、geom_bar)であなたの美学仕様を絞り込むことができます2:データをロングフォーマットに変換して凡例を追加する

凡例を追加するには、reshape2::meltを指定すると、データフレームがワイドフォーマットからロングフォーマットに変換され、variable( "開始"と "終了")の列とvalueが得られます。次に、あなたの凡例を定義するためにvariable列を使用します。

library(reshape2) 
my_data_long <- melt(my_data, id.vars = c("Block")) 
ggplot(data=my_data_long,aes(x=Block, y=value, fill=variable, color=variable, alpha=variable)) + 
    geom_bar(stat="identity",position ="identity") + 
    scale_colour_manual(values=c("lightblue4","red")) + 
    scale_fill_manual(values=c("lightblue","pink")) + 
    scale_alpha_manual(values=c(.3, .8)) 

enter image description here

+0

母は、とても簡単!どうもありがとうございます! – metazoa

+0

プロットの横に凡例が必要な場合は、編集した回答の変種2を見てください。 –

+0

おっと、ありがとう! – metazoa

関連する問題