投稿

2016の投稿を表示しています

R+ggplot2のヒストグラム(geom_histogram)でバーの上に度数をつける

標題のことをしようと(標題をそのまま放り込むノリで)日本語で検索しても、うまく見つからず、最終的に解決したのでまとめてみました。 標準グラフだったら見つかった のですけれど。目先を変えて英語で探したら、 Stack Overflow にいろいろありました。 ここ とか ここ とか ここ とか ここ とか。ggplot2でグラフを描く必要がある方なら最初から英語で探せるのかもしれませんけれど、備忘録代わりに自分に要り用のコードでまとめ直しました。検索でたどり着いた人のショートカットになるでしょうし。スマートでなかったり、もっといい方法があるかもしれませんが自分には必要なものができ、また他ソフトの出力と一致しました。 例として、データフレームdatに入っている変数number(人数)でヒストグラムを描きます。20人ごとに、0〜19人、20〜39人で区間を刻んでいきます。区間の開閉にrightをつけていますがこれは古い記法でclosedを使うよう警告が出ます。2行目までで図だけは描けるわけですが、そのあとはgeom_textで付加するのかとちょっと苦闘(勘違い)しました。散布図の点にテキストラベルを付加するわけではないですね。 ggplot(dat,aes(x=number)) +     geom_histogram(binwidth=20,boundary=0,right=FALSE) +     stat_bin(binwidth=20,boundary=0,right=FALSE,aes(label=..count..), geom="text",vjust=-0.5) 結果的にはstat_binで。そもそもgeom_histogramは、stat_binのラッパーなんだとか。なら2行目も含めてstat_binで描けるのかもしれませんが。数値ラベル部分は3行目のレイヤーで付加しているのですが、図と同じようにするための区間をもう一度指定します(ここも無指定でしていたら数字がずれて悩んだ)。..count..が度数を格納している隠れ変数で、これをラベルにして表に出す。vjustでちょうどよさそうな場所を縦位置を指定しました。 まあ、図表示して更に数字だと情報的には冗長なのかもしれないですが、視覚的につかみたく、正確な値も知