pythonで描く箱ひげ図
pythonで箱ひげ図を描く場合、matplotlibもしくは、seabornのどちらかで描くことが多いと思います。微妙に書き方が違う部分があるのでまとめていこうと思います。
Contents
matplotlibで描く箱ひげ図
まずmatplotlibを用いて、図を書いていきます。
必要なパッケージをimportする
import matplotlib.pyplot as plt #必要なパッケージをimportする import pandas as pd from sklearn.datasets import load_iris
データフレームをダウンロードする
iris = load_iris() #テストデータとしてirisをロード df = pd.DataFrame(iris.data, columns=iris.feature_names) #データフレームを作成 columnsでカラム名を指定する print(df.head()) #データを表示する
シンプルな箱ひげ図
a=list(df["sepal length (cm)"])#値の指定 b=list(df["sepal width (cm)"])#値の指定 data=[a,b]#データとしてまとめる fig, ax = plt.subplots() bp = ax.boxplot(data)#箱ひげ図をプロット plt.show()
細かな設定
a=list(df["sepal length (cm)"])#値の指定 b=list(df["sepal width (cm)"])#値の指定 data=[a,b]#データとしてまとめる fig, ax = plt.subplots() bp = ax.boxplot(data, notch=False, #くぼんだ箱ひげ図 vert=True, #横向き、縦向き whis=[5,95], #外れ値の定義 widths=0.5,#箱ひげ図の幅 flierprops=dict(markerfacecolor='g', marker='D'), #外れ値マーカーの設定 showfliers=False,#外れ値の表示の設定 ) ax.set_xticklabels(["A","B"]) #Xラベルの設定 ax.set_yticks([0,5,10])#Y目盛りの設定 ax.set_ylim([0,10])#Y軸の設定 plt.show()
Seabornで描く箱ひげ図
まず、パッケージをimportする
import seaborn as sns #必要なパッケージをimportする
tips = sns.load_dataset("tips") print(tips)
シンプルな図
sns.boxplot(x="sex", y="total_bill", data=tips)
細かな設定
m=sns.boxplot(x="sex", #値の設定 y="total_bill", #値の設定 orient="v", #軸の方向 v (縦方向) or h (横方向) width=0.5, #箱ひげ図の幅 fliersize=0, #外れ値の大きさ 0も可 linewidth=0.1, #箱ひげ図の線の太さ whis=[5,95], #外れ値の定義 order=["Male", "Female"], #軸の順番 data=tips) #使用するデータ m.set(ylim=(0,60), #Y軸の最小値、最大値を指定 yticks=[0,20,40,60]) #表示するY軸を指定 plt.show()
まとめ
seabornを使う場合、inputデータをあらかじめ加工しておくと解析がしやすそう!