KMDのプログラミングメモノート

主にUnity(C#)を中心としたプログラムの備忘録

Python レーダーチャートの描画(numpy, matplotlib)

概要

レーダーチャートの描画方法をまとめました。
どうやら、グラフを極座標表示することで実現できるようです。




注意

以下ではプログラムを分けて書いていますが、すべて連続したものです。



インポート

#インポート
import matplotlib.pyplot as plt
import numpy as np




フォントの設定

#フォントの設定
plt.rcParams['font.size'] = 16
plt.rcParams['font.family'] = 'MS Gothic'




ラベル、データなどの設定

#ラベルの設定
subjectNames = ['英語', '数学', '国語', '社会', '理科']
#角度の設定
angles = np.linspace(0, 2 * np.pi, len(subjectNames) + 1)

#データの設定
scores = np.array([92, 67, 38, 40, 65])
values = np.concatenate([scores, [scores[0]]])





グラフの描画

#グラフの描画
fig = plt.figure()
ax = fig.add_subplot(111, polar = True)

#塗りつぶし
ax.fill(angles, values, alpha=0.3)

# 項目ラベルの表示
ax.set_rlim(0, 100)

#θ軸ラベルの設定(弧度法)
labels = [f'{subjectNames[i]}:{values[i]}' for i in range(0, len(subjectNames))]
ax.set_thetagrids(np.degrees(angles[:-1]), labels)
ax.set_theta_zero_location("N")#0度が上に来るようにする

#タイトル
ax.set_title("スコア")

#描画
ax.plot(angles, values)




実行結果

f:id:KiironoMidori:20220307215112g:plain