2011-06-23 15 views
35

geom_barグラフの上にいくつかのラベルを重ねることをお勧めします。ここでは例です:ggplot2を使ってRのgeom_barにラベルを貼る方法

df <- data.frame(x=factor(c(TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE))) 
ggplot(df) + geom_bar(aes(x,fill=x)) + opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(),axis.title.x=theme_blank(),legend.title=theme_blank(),axis.title.y=theme_blank()) 

テーブル(DFの$ x)から

FALSE TRUE 
    3  5 

私が上に3と5を持っているしたいのですが2つのバーのうちの1つ。パーセント値も持つことができればさらに良い。例えば。 3 (37.5%)および5 (62.5%)。ように:

これは可能ですか?もしそうなら、どうですか?

+2

バーの上部に数字またはテキストを追加すると、目の高さがどのように比較されるのかが歪みます。 Rヘルプの[この議論](http://tolstoy.newcastle.edu.au/R/e2/help/07/08/22858.html)を参照してください。 –

答えて

28

ggplotの多くのタスクと同様に、一般的な戦略は、変数がプロット内の変数や美学と一致するように、プロットに追加したいものをデータフレームに配置することです。したがって、たとえば、あなたは、このような新しいデータフレームを作成したい:

dfTab <- as.data.frame(table(df)) 
colnames(dfTab)[1] <- "x" 
dfTab$lab <- as.character(100 * dfTab$Freq/sum(dfTab$Freq)) 

x変数がそうでdfに対応する変数と一致し、そのようにします。そして、あなたは、単にそれがgeom_textを使用して、次のとおり

ggplot(df) + geom_bar(aes(x,fill=x)) + 
    geom_text(data=dfTab,aes(x=x,y=Freq,label=lab),vjust=0) + 
    opts(axis.text.x=theme_blank(),axis.ticks=theme_blank(), 
     axis.title.x=theme_blank(),legend.title=theme_blank(), 
     axis.title.y=theme_blank()) 

この例では、ただの割合をプロットしますが、することができますpaste一緒にカウントだけでなく経由でこのような何か:

dfTab$lab <- paste(dfTab$Freq,paste("(",dfTab$lab,"%)",sep=""),sep=" ") 

なお、現在のバージョンでggplot2のoptsは推奨されていませんので、今度はthemeelement_blankを使用します。

36

ggplotにテキストをプロットするには、geom_textを使用します。しかし、私はデータが事前にまとめているので、あなたがgeom_barstat="identity"パラメータを追加変更してくださいする必要があり、それが参考にddply

dfl <- ddply(df, .(x), summarize, y=length(x)) 
str(dfl) 

を使用して第1のデータをまとめるために見つける:

ggplot(dfl, aes(x, y=y, fill=x)) + geom_bar(stat="identity") + 
    geom_text(aes(label=y), vjust=0) + 
    opts(axis.text.x=theme_blank(), 
     axis.ticks=theme_blank(), 
     axis.title.x=theme_blank(), 
     legend.title=theme_blank(), 
     axis.title.y=theme_blank() 
) 

enter image description here

関連する問題