Rでヒストグラムの上に度数の数字を表示する
例えば、↓こんなヒストグラムがあったとしましょう。
ぱっと見、30~40と40~50の階級の度数はゼロなんだな、と見えちゃいますが、そうではありません。
↓実はこんなスクリプトでサンプルデータを作ったので、
30~40の階級には10の度数、40~50の階級には1の度数があるんですよね。でも、0~10の階級の10000の度数が多すぎるために、つぶれて見えなくなってしまったという状態。
こんなときは、棒グラフの上のところに度数の数字を表示させてやれば、少ない度数の階級についても確認ができます。
labels=T オプションを指定するだけなので、とても簡単です。
が、実は私、このオプションの存在を知らず、いままで↓下記のような方法で書いてました。(このへんの紆余曲折が、この記事を書こうと思い立った理由だったりします)
hist関数の戻り値(変数hに格納してます)には、階級値や度数の情報が入っているので、それをtext関数で表示させるというもの。
文字と棒グラフのborderが重なって見にくいと思う場合は、↓こうやればOK。
text関数のオプションに pos=3 をつけてやれば、テキストの描画位置が指定座標のやや上側になります。さりげなく、y軸の範囲を広げている(ylim=c(0,10100)のところ)のは、こうしないと数字の上部が切れてしまうから。
labels=T 指定と同じようなヒストグラムが描けたものの、いろいろと面倒くさいですね。
ただ、この方法にも良い点があって、それは表示する数字を加工することができるというものです。手作りだから当たり前なのですが。
↓こんな感じ。
度数を1000で割るという演算を行い、単位として「千」という文字を追加しました。
表示する数字をいろいろとカスタマイズしたい場合は、この方法でやるとよさそうです。
普通にhist関数で描画したもの。 30~40、40~50の階級の度数はゼロ? |
ぱっと見、30~40と40~50の階級の度数はゼロなんだな、と見えちゃいますが、そうではありません。
↓実はこんなスクリプトでサンプルデータを作ったので、
30~40の階級には10の度数、40~50の階級には1の度数があるんですよね。でも、0~10の階級の10000の度数が多すぎるために、つぶれて見えなくなってしまったという状態。
こんなときは、棒グラフの上のところに度数の数字を表示させてやれば、少ない度数の階級についても確認ができます。
hist関数にlabels=Tオプションを指定し、度数を表示させたもの |
labels=T オプションを指定するだけなので、とても簡単です。
が、実は私、このオプションの存在を知らず、いままで↓下記のような方法で書いてました。(このへんの紆余曲折が、この記事を書こうと思い立った理由だったりします)
hist関数の戻り値を、text関数を使ってプロット |
hist関数の戻り値(変数hに格納してます)には、階級値や度数の情報が入っているので、それをtext関数で表示させるというもの。
文字と棒グラフのborderが重なって見にくいと思う場合は、↓こうやればOK。
文字が棒グラフの線と重ならないようにしたもの |
text関数のオプションに pos=3 をつけてやれば、テキストの描画位置が指定座標のやや上側になります。さりげなく、y軸の範囲を広げている(ylim=c(0,10100)のところ)のは、こうしないと数字の上部が切れてしまうから。
labels=T 指定と同じようなヒストグラムが描けたものの、いろいろと面倒くさいですね。
ただ、この方法にも良い点があって、それは表示する数字を加工することができるというものです。手作りだから当たり前なのですが。
↓こんな感じ。
棒グラフの上に表示する数字に加工を施したもの |
度数を1000で割るという演算を行い、単位として「千」という文字を追加しました。
表示する数字をいろいろとカスタマイズしたい場合は、この方法でやるとよさそうです。
コメント
コメントを投稿