Python 行列散布図にて、横軸と縦軸を各々リストで指定する「sns.pairplot」

 本記事では、下図のような行列散布図を作成します。特に、横軸(X軸)と縦軸(Y軸)をそれぞれリストで指定してプロットします。ここでは、X軸にWeight, Waist, Pulse の3つを指定し、Y軸にChins, Situps, Jumps の3つを指定した図です。

下図は、上記をプロットしたデータセットです。

 列名を指定する際には、全ての列名を指定する必要はありません。例えば、下図はY軸に指定したリストの要素が、 Jumps のみの場合の図となります。

■本プログラム

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import os
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 生理学的特徴と運動能力の関係についてのデータセット
file_path = 'linnerud_XYdata.csv'

# pandasデータフレームで読み込む
df = pd.read_csv(file_path)
df


# In[2]:


### 行列散布図

# 縦軸にする列名をリスト化
x_name_list = [
'Weight',
'Waist',
'Pulse',
]

# 横軸にする列名をリスト化
y_name_list = [
'Chins',
'Situps',
'Jumps'
]

# グラフの書式の設定
sns.set(style = 'whitegrid') # 'whitegrid' 'darkgrid'
sns.set_context('talk') # 文字の大きさ
# ペアプロット
ax = sns.pairplot(
    df, # データセット
    x_vars = x_name_list, # x軸にするカラムのリスト
    y_vars = y_name_list, # y軸にするカラムのリスト
    kind = 'reg', # 線形近似線を記入
    markers = '.',
    diag_kind = None,
    height = 3,
    aspect = 3/4
)
# タイトル
ax.fig.suptitle(file_path, y = 1.0)

# 見た目の調整
plt.subplots_adjust(left=0.1, right=0.9, bottom=0.3, top=0.95)

# ファイルパスから、拡張子なしのファイル名と拡張子の取得
file_name_wo_extension, extension = os.path.splitext(file_path)
# 画像ファイルに出力する
plt.savefig(f'{file_name_wo_extension}.jpg')

# オブジェクトを閉じる
plt.close()

以上

<広告>