ヒストグラムの作図Tips 7/7[外形をRのそれに似せるためのあれこれ]
アウトライン
言うまでもなくバッドノウハウの範疇に入るネタ的な備忘録です。手段が目的化し生産性を著しく犠牲にすること請け合いですので,Rの使えない環境でhist()関数によるヒストグラムのシンプルな機能美というかそんな外形が非常に恋しくなってきたときにでも参照ください。
なお作図のためのアルゴリズムを再現するような積極的なものではありません(むろん筆者にはその能もありませんが)。あくまでもグラフィカルな要素のみに執着します。
Step 0シチュエーションの設定
例示のため スポーツクラブXの会員の年齢データ を一部変更して70歳代の会員を0にした上で,page1~page3でおこなってきたような10代, 20代, 30代, …といった階級のとりかたでRのhist()関数
- hist(member$age,breaks=seq(10,90,10), right=F, xlim=c(0,100))
を実行すると下の図のようなヒストグラムが返ってきます(もちろんRによるもの。特に明記しない場合は以下に同じ)。
またオプションをまったく指定せずに
- hist(member$age)
を実行すると下の図のようなヒストグラムが返ってきます。
以上を順にCase1, Case2として
以下Case1の場合は青緑の各部位を調整する(オレンジはあきらめ!)ことで“だいたい似せる”ための簡潔な方法を
Case2では青緑に加え青い部位も調整(より正しくは偽装)していくことで“かなり似せる”ためのちょっと込み入った方法を扱います。
ただし,再計算や図の拡大縮小機能による利便性をできるだけ殺さないよう,両者とも「図形」機能による偽装は用いないとした縛りをつけます。
工程
Case1|類似度 “だいたい”
Step 1度数分布表の用意と棒グラフの挿入
Step 2軸の振り替え
「度数」系列を第2軸に振り替え,要素の間隔を0にします。
Step 3グラフ種の変更
「ダミー」系列・「水平線」系列をともに散布図に変更します。この変更にともない“第2軸”チェックボックスに意図せぬチェックマークが入ったら,それを解除しておきます。
Step 4軸の削除
第2縦軸をなくします。
Step 5軸の追加
第2横軸をつくります。
Step 6軸目盛の消去・ラベル位置の調整
第2横軸の目盛をなくし,ラベルの位置を“下端/左端”に変更します。
Step 7MAX | MIN | INTERVAL 指定
横軸(第1横軸。以下に同じ)の最小値・最大値を度数分布表によるRangeと一致させます。目盛間隔は,Step 0のRのアウトプットと同じになるよう,ここでは20とします(任意)。
Step 8軸目盛の作成・彩色・フォント指定
横軸に目盛をつくり,それを含む軸の色を黒に変え,フォントをR Graphicsと類似のもの(筆者の環境ではArialだと思われます)に指定し,あわせてサイズも調整しておきます。
Step 9縦軸のパラメータ指定
同様にして,縦軸(第1縦軸。以下に同じ)の最小値|最大値|目盛間隔を指定します。最小値は0,最大値は最大度数以上で,目盛間隔は任意に定めます。
目盛・線色・フォントも先と同じように設定します。
Step 10軸フォントサイズの調整・不可視化
第2横軸を選択し,フォントサイズを下げながら横軸と棒との頃合い間隔を探っていきます。これが決まったら文字色を白に変え不可視とします。
Step 11水平線の彩色・幅調整・マーカー削除
「水平線」系列の線色を黒に,線幅を横軸等と違和感の出ない程度の太さに調整した上で,マーカーをなくします。
※Excel 2013より前のversionで正しく設定をしてもマーカーのみが表示され水平線が描画されない場合,元表「水平線」列の0を0.01, 1E-3といった微小値で代替できるかどうか試してみるといいかもしれません(両端以外に度数0の階級がない場合は後の作業で見た目の辻褄が合うので,無視するという選択肢もアリです)。
[度数分布表の最後に度数0の階級をとらなかった場合]
水平線を図の右端まで引くためにダミーの階級を用意し,下図のように「水平線」系列のデータ範囲のみ増やして対処します。
Step 12ダミー系列の不可視化
先と同様,今度は「ダミー」系列のマーカーをなくします。
Step 13凡例等グラフ要素の削除
グラフタイトル,凡例,目盛り線,軸線色等邪魔なものを必要に応じて削除します。
Step 14bin の彩色
「度数」系列の棒を白抜きにします。
Step 15縦軸目盛|値ラベルの回転
縦軸目盛の値を左へ90°傾けます。
Step 16ヒストグラムの完成
縦横をアバウトに等比とし,必要に応じてラベルなどを追加して目的のヒストグラムの完成です。
Case2|類似度 “かなり”
Step 1度数分布表の用意と棒グラフの挿入
最初の階級に“度数0の階級”をとった度数分布表を用意します(最下行の度数0階級はRangeとの兼ね合いを見て任意に挿入。たとえば挿入することによって目盛間隔が取りやすくなる場合などに)。「ダミー」列見出し直下の数字は最大度数,「水平線」列は見出し直下のセルを除いてすべてを0で埋めます(両端に度数0の階級をとる場合の施策。その他の場合は後述)。
また,度数分布表の隣には下図のような見出しを作成しておきます。
階級値(ここでは階級下限)列(A列)の見出しを空にして表の領域をすべて選択し,集合縦棒グラフをつくります。
DL
Step 2軸の振り替え
「度数」系列を第2軸に振り替え,要素の間隔を0にします。
Step 3グラフ種の変更
「ダミー」系列・「水平線」系列をともに散布図に変更します。この変更にともない“第2軸”チェックボックスに意図せぬチェックマークチェックが入ったら,それを解除しておきます。
Step 4MIN|MAXの指定
横軸(第1横軸。以下に同じ)の最小値・最大値を度数分布表によるRangeと一致させます。またこの作例での目盛間隔は意味をなしませんので無視します。
Step 5軸の削除
第2縦軸をなくします。
Step 6水平線の彩色・幅調整・マーカー削除
「水平線」系列の線色を黒に,線幅を横軸等と違和感の出ない程度の太さに調整した上で,マーカーをなくします。
※Excel 2013より前のversionで正しく設定をしてもマーカーのみが表示され水平線が描画されない場合,元表「水平線」列の0を0.01, 1E-3といった微小値で代替できるかどうか試してみるといいかもしれません(両端以外に度数0の階級がない場合は後の作業で見た目の辻褄が合うので,無視するという選択肢もアリです)。
[度数分布表の最後に度数0の階級をとらなかった場合]
水平線を図の右端まで引くためにダミーの階級を用意し,下図のように「水平線」系列のデータ範囲のみ増やして対処します。
Step 7ダミー系列の不可視化
つづけて「ダミー」系列のマーカーもなくします。
Step 8軸|目盛座標の作成
度数分布表の隣に,縦横軸とそれらの目盛に関する座標を作成します。左から順に,横軸の目盛・横軸のy座標・縦軸のx座標・縦軸の目盛 です。
まず 左から1列目 および 左から4列目 を埋めます。これは目盛としてそのままグラフに表示させる値となります。
つづいて 左から2列目は“最小度数(0)からの適度なマイナス距離”,左から3列目は“度数分布表の最も上の階級の範囲内のてきとうな値”を初期値(修正が利くのでアバウトでOK)とし,左または右と同行分のセルを同じ値ですべて埋めます。
Step 9系列の追加
縦横軸(としての役割をもつ)系列をあらたに追加します。
Step 10軸の基本的な書式設定
「X-axis」系列を選択(この時点では不可視の状態につきリボンの「書式」タブから)し,線色・線幅を調整します。同様の作業を「Y-axis」にも適用します。
Step 11横軸|データラベルの追加
「X-axis」系列を選択し,“下”にデータラベルを挿入します。そのままラベルを選択し,ラベルの内容を“X値”, “引き出し線”とし,“テキストに合わせて図形の”のチェックを外して引き出し線を描画させます。
軸とこのラベル(目盛の値)との距離を調整する場合は,「垂直方向の配置」および「上余白」の設定もおこないます。
Step 12横軸|引き出し線の線色・線幅
引き出し線を選択し,線色と線幅を全体となじむ程度に変更します。
Step 13縦軸|データラベルの追加
「Y-axis」系列を選択し,“左”にデータラベルを挿入します。そのままラベルを選択し,ラベルの内容を“Y値”, “引き出し線”とし,“テキストに合わせて図形の”のチェックを外して引き出し線を描画させます。
目盛の値を左に90°傾けたのち,軸とこのラベル(目盛の値)との距離を調整する場合は,「垂直方向の配置」および「上余白」の設定もおこないます。
Step 14縦軸|引き出し線の線色・線幅
先と同様,引き出し線を選択し,線色と線幅を全体となじむ程度に変更します。
Step 15bin の彩色
「度数」系列の棒を白抜きにします。
Step 16細部調整
グラフタイトル,凡例,目盛り線,ラベル,(本来の)軸線色等邪魔なものを必要に応じて削除します。
縦横をアバウトに等比とし,必要に応じてラベルなどを追加してヒストグラムの完成です(全要素のフォントをArialにしてサイズを上げるとそれっぽくなるような気もします[データラベルのフォントサイズを上げる際,枠を固定してあるので表示上強制的に改行されます。この状態は,次の引き出し線のトラブルと同じ方法で解決できます])。
これら操作の過程で引き出し線が消失(筆者の環境では結構な頻度で起こります)したとき,作業におおむね目途がついた時点で“テキストに合わせて図形の”のチェックを一旦入れて再度外すと引き出し線が現れます。
またこのとき棒と縦横両軸との隙間を確認し,その幅に修正の必要があれば表の値を直接書き換えてこれを直します(そのまま図に反映; 最下の図は例示のため一部のみ修正したところ)。
Step 17ヒストグラムの完成
目的のヒストグラムの完成です。
その他の参照
このサイトの関連How-toです。
メインサイト「ひとりマーケティングのためのデータ分析」のヒストグラムに関するHow-toです。