Python 散布図にて象限別に色分けする。またグラフ上にデータ点名を表記する。

 本記事では、下図のような散布図の雛形コードを載せました。特徴は、第1から第4象限までの各象限のデータを異なる色でプロットします。また、各データポイントのデータ名を散布図上に表記します(この例では‘A’から’J’)。これにより、データを識別するのが容易になります。

下表は、上図のプロットしたサンプルデータです。

■本プログラム

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.rcParams['font.size'] = 18 # グラフの基本フォントサイズの設定

# データセット作成
data = {
    'Name': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
    'X': [5.055408322, -2.385845007, -1.711207898, 5.58138151, 0.603216157, -0.254582819, -4.996806703, 2.14433048, 4.635058437, -1.710784347],
    'Y': [4.13072286, 3.289168743, -2.341629963, -2.514922835, 4.750136776, 2.106630909, -0.976219056, -3.237439429, -4.717556451, 1.322998337]
}

df = pd.DataFrame(data)
print(df)

# 第一象限、第二象限、第三象限、第四象限にデータを分割
quad1 = df[(df['X'] > 0) & (df['Y'] > 0)]
quad2 = df[(df['X'] < 0) & (df['Y'] > 0)]
quad3 = df[(df['X'] < 0) & (df['Y'] < 0)]
quad4 = df[(df['X'] > 0) & (df['Y'] < 0)]

# 散布図をプロット
plt.figure(figsize=(8, 6))
plt.scatter(quad1['X'], quad1['Y'], color='red', s=50, label='第一象限')
plt.scatter(quad2['X'], quad2['Y'], color='orange', s=50, label='第二象限')
plt.scatter(quad3['X'], quad3['Y'], color='blue', s=50, label='第三象限')
plt.scatter(quad4['X'], quad4['Y'], color='green', s=50, label='第四象限')

# データ名をプロット
for i, txt in enumerate(df['Name']):
    plt.annotate(txt, (df['X'][i], df['Y'][i]), textcoords="offset points", xytext=(0,10), ha='center')

# オプション設定
plt.xlim(-6, 6)
plt.ylim(-6, 6)
plt.axhline(0, color='black',linewidth=1.5)
plt.axvline(0, color='black',linewidth=1.5)
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('散布図')
plt.legend(bbox_to_anchor=(1, 1), loc='upper left')
plt.grid(True)
#plt.show()
plt.savefig('sample.jpg', bbox_inches='tight')

以上

<広告>