本記事では、下図のような等高線図を描く雛形コードを載せました。
下図は、上図を描いた数値データです。この例では、Xの値は1~10の整数、Yの値は1~8の整数の値をとっています。上図は、その組み合わせ「頂点座標(X, Y)」の数を全体数で割った割合を等高線で図示しています。
■本プログラム
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.rcParams['font.size'] = 15
file_path = 'test_data.csv'
data = pd.read_csv(file_path)
x_name, y_name = 'X', 'Y'
data = data[[x_name, y_name]]
num_rows = len(data)
pivot_table = data.pivot_table(index=x_name, columns=y_name, aggfunc='size', fill_value=0)
proportions = pivot_table / num_rows * 100
X, Y = np.meshgrid(proportions.columns, proportions.index)
Z = proportions.values
cmap = plt.colormaps.get_cmap('bwr')
fig, ax = plt.subplots(figsize=(8, 6))
cp = ax.contourf(X, Y, Z, cmap=cmap)
plt.colorbar(cp, label='割合')
ax.set_xticks(np.arange(1, 11))
ax.set_xticklabels(np.arange(1, 11))
ax.set_yticks(np.arange(1, len(proportions.index) + 1))
ax.set_yticklabels(np.arange(1, len(proportions.index) + 1))
ax.set_aspect('equal', 'box')
plt.grid(True)
plt.xlabel(x_name)
plt.ylabel(y_name)
plt.title(f'{x_name} と {y_name} の等高線図', fontsize=14)
plt.show()
以上
<広告>
リンク
リンク