2011-09-13 26 views
3

私は、次のコマンドを使用してかわした棒グラフを作成しました:テーブルをグラフに追加するにはどうすればよいですか?

a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2) 
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D") 
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5) 
dat = data.frame(Group=a, Member=b, Percentage=c) 
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", position="dodge", fill="white", colour="black") 

私は値のセットがある場合:

table_values = c("2", "4", "2", "1") 
table_total = c("A", "B", "C", "D") 
tab = data.frame(Type=table_total, Value=table_values) 

それように私は私のグラフをテーブルとしてこれを追加することができますどのように整列していますか?このような何か:

enter image description here

は、私はこれを手動で行うことができますが、私はこれを自動化することができるならば、グラフの多くはので、私は思っていた生成する必要があります。これを行う方法に関する提案はありますか?

答えて

8

これはちょっとハックですが、テキストをわずかに負のy値として配置してgeom_textをアノテートできます。これにより、軸の下ではなくプロット領域に配置されます。

私はより複雑なアプローチは、2つの別々のプロット、棒グラフである1、「表」であるものを作成することです
ggplot(dat, aes(x=Member, y=Percentage)) + 
    geom_bar(stat="identity", position="dodge", fill="white", colour="black") + 
    geom_text(aes(x=table_total, label=table_values), y=-2, data=tab) 

Using geom_text to make something like a table in a graph

(ほぼすべてのテーマの要素をオフにする)と、何かを使用してalign.plots(正しい名前であるかどうかはわかりません)のように、ggExtraパッケージにあります。

+0

ありがとうございました。完璧に動作します!しかし、簡単な質問:-2を指定すると、ggplotはY軸にその番号を表示しないので、すべて正常です。しかし、私が-20と言うならば、それはします。 ggplotに0,80の値を表示させる方法はありますか?あまりにも混乱している場合、私は試して言い換えます。 – Legend

+0

軸にラベルを付ける値を指定できます。たとえば、 '+ scale_y_continuous(breaks = c(0,20,40,60,80))'を追加することができます。 –

+0

恐ろしい...百万をありがとう! – Legend

関連する問題