Pythonで描く散布図
バイオ系博士
pythonで散布図を描く場合、matplotlibもしくは、seabornのどちらかで描くことが多いと思います。微妙に書き方が違う部分があるのでまとめていこうと思います。
Contents
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()
細かな設定
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で違うので気をつける!