pythonってすごいね

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

Pythonで描く散布図

バイオ系博士

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

matplotlibで描く散布図

まずよく使われるmatplotlibを用いて、図を書いていきます。

import numpy as np #使うパッケージをimportする
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
iiris = load_iris() #テストデータとしてirisをロード

df = pd.DataFrame(iris.data, columns=iris.feature_names) #データフレームを作成 columnsでカラム名を指定する

print(df.head()) #データを表示する

必要なデータを選択する

columns_list=list(df.columns) #dfからカラム名を取得
x=df[columns_list[0]] #sepal lengthを取り出す
y=df[columns_list[1]]
plt.scatter(x, y) #プロットする
plt.show() #プロットした図を表示する jupyterはなくてOK

細かな設定

msq=np.polyfit(x, y, 1) #直線近似の傾き
liner = np.poly1d(msq)(x) #傾きを基に直線を算出

plt.xlim([4,8]) #表示するX軸の設定
plt.ylim([2,5]) #表示するY軸の設定

plt.xticks([4,6,8]) #X軸ラベル
plt.yticks([2,3,4,5]) #Y軸ラベル

plt.plot(x, y1,color='r') #直線近似線をプロット
plt.scatter(x, y,s=5,color='k') #散布図をプロット

seabornで描く散布図

import numpy as np #使うパッケージをimportする
import seaborn as sns
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris

先ほどと同じく、データを設定

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
columns_list=list(df.columns) #dfからカラム名を取得
x=df[columns_list[0]] #sepal lengthを取り出す
y=df[columns_list[1]]

m = sns.lmgplot(x=columns_list[0], y=columns_list[1], data=df)
plt.show()

回帰線を消す場合

m = sns.lmgplot(x=columns_list[0], 
                        y=columns_list[1], 
                        data=df, 
                        fit_reg=False)

plt.show()

細かな設定

matplotlibとは異なる点

  1. 回帰線、各点の色の設定
  2. 軸の設定

m = sns.lmplot(x=columns_list[0], #x軸にするカラム名を指定
                      y=columns_list[1], #y軸にするカラム名を指定
                      data=df, #dfを指定
                      scatter_kws={'color': 'black'}, #各点の色を指定
                      line_kws={'color': 'red'}, #回帰線の色を指定
                      fit_reg=True, #回帰線を描くかどうかを指定
                      ci=None) #信頼区間を描くかどうか

m.set(xlim=(4,10), #X軸の最小値、最大値を指定
         ylim=(2,6), #Y軸の最小値、最大値を指定
         xticks=[4, 6,8,10], #表示するX軸を指定
         yticks=[2,4,6]) #表示するY軸を指定
plt.show()

特に軸、色の設定がmatplotlibとseabornで違うので気をつける!