いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】複数のヒストグラムをいい感じに並べたい

・お題:いろいろなヒストグラムを分かりやすく並べて描画したい。

 

ヒストグラムは分布をみるのに便利だけれど、たくさん描くと見づらくなってしまう。そこで、良い感じに複数のヒストグラムを並べて描画できないか、少し調べてみた。

 

・とりあえず、データセットを作成する。

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の方が簡単な雰囲気がある。

seaborn.pydata.org

・次に、joypyでZがxの群とyの群の分布を描き分ける。

joypy.joyplot(df, by="Z", alpha=0.5, legend=True)

シンプルな記述で、見やすいグラフを描くことができたように思う。

 

おわり