・お題:いろいろなヒストグラムを分かりやすく並べて描画したい。
・ヒストグラムは分布をみるのに便利だけれど、たくさん描くと見づらくなってしまう。そこで、良い感じに複数のヒストグラムを並べて描画できないか、少し調べてみた。
・とりあえず、データセットを作成する。
import numpy as np
import pandas as pd
a=np.random.normal(0,1,100)
b=np.random.normal(-10,1,100)
c=np.random.normal(0,3,100)
d=np.random.normal(5,0.5,100)
X=list(np.repeat("x",80))
Y=list(np.repeat("y",20))
z=X+Y
df=pd.DataFrame({"A":a,"B":b,"C":c,"D":d,"Z":z})
でdfの中身は以下になる。Zはなんとなく作成したラベルで、ラベルごとの各変数の分布も見たい場合の作図にちょっと使う。
・pandasの機能でヒストグラムを作図する。
df.plot.hist(bins=20,alpha=0.5)
透けさせているので、少し見やすくなっている。用途によってはこれで十分かも知れない。
・調べてみたところ、joypyというライブラリがヒストグラムを並べるのに便利らしい。pip install joypyでjoypyをインストールし、さっそく使ってみた。
import joypy
joypy.joyplot(df)
ちょっとずらしてヒストグラム(?)を描画してくれた。先ほどよりも見やすい気がする。
・ちなみに、seabornでも同じようなことができるらしいが、joypyの方が簡単な雰囲気がある。
・次に、joypyでZがxの群とyの群の分布を描き分ける。
joypy.joyplot(df, by="Z", alpha=0.5, legend=True)
シンプルな記述で、見やすいグラフを描くことができたように思う。
おわり