本記事では、下図のような縦軸と横軸が文字列の場合の等高線図を描く雛形コードを載せました。図示するにあたって、下図例の横軸では「特大、大、中、小、極小」の順に、「0, 1, 2, 3, 4」の座標を割り当てることによって実現しています。縦軸も同様の考え方です。
下表は、上図の元となるデータセットです。
■本プログラム
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
import japanize_matplotlib
plt.rcParams['font.size'] = 15
df = pd.read_csv('sample_data.csv', encoding='cp932')
print(df)
grades = df['成績'].tolist()
sizes = df.columns[1:].tolist()
data = df.iloc[:, 1:].values
X, Y = np.meshgrid(np.arange(len(sizes)), np.arange(len(grades)))
norm = Normalize(vmin=0, vmax=25)
cmap = plt.cm.get_cmap('bwr')
fig = plt.figure(figsize=(8, 8))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
contourf = ax.contourf(X, Y, data, cmap=cmap, norm=norm)
plt.colorbar(contourf, ax=ax, label='値')
ax.set_aspect('equal')
ax.set_title('等高線図')
ax.set_xlabel('大きさ')
ax.set_ylabel('成績')
ax.set_xticks(np.arange(len(sizes)))
ax.set_xticklabels(sizes)
ax.set_yticks(np.arange(len(grades)))
ax.set_yticklabels(grades)
ax.invert_yaxis()
plt.grid(True)
plt.show()
以上
<広告>
リンク
リンク
リンク