pythonってすごいね

RNAseqを用いた遺伝子発現量解析、機械学習を用いた回帰、分類などの解析を中心に記事を書いていきたいです!

pythonで描く箱ひげ図

pythonで箱ひげ図を描く場合、matplotlibもしくは、seabornのどちらかで描くことが多いと思います。微妙に書き方が違う部分があるのでまとめていこうと思います。

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データをあらかじめ加工しておくと解析がしやすそう!