レーダーチャートで多項目を比較

中級

6.7.2

レーダーチャートで多項目を比較

最終更新 2020-02-12 読了時間 1 分
まとめ
  • レーダーチャートで複数KPIのバランスを面積で比較する。
  • 極座標(polar=True)にax.plotax.fillで多角形を描画。
  • プロダクトやチームの強み・弱みを一枚で俯瞰したいときに使う。

プロダクト A/B の KPI をレーダーチャートで比較する例です。matplotlib の極座標を使用します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import numpy as np
import matplotlib.pyplot as plt

metrics = ["UX", "機能", "安定性", "速度", "サポート"]
values_a = np.array([4.2, 4.5, 4.0, 3.9, 4.4])
values_b = np.array([3.8, 4.1, 4.3, 4.5, 3.7])

angles = np.linspace(0, 2 * np.pi, len(metrics), endpoint=False)
values_a = np.concatenate((values_a, [values_a[0]]))
values_b = np.concatenate((values_b, [values_b[0]]))
angles = np.concatenate((angles, [angles[0]]))

fig, ax = plt.subplots(figsize=(5, 5), subplot_kw=dict(polar=True))
ax.plot(angles, values_a, color="#2563eb", linewidth=2, label="プロダクトA")
ax.fill(angles, values_a, color="#2563eb", alpha=0.25)
ax.plot(angles, values_b, color="#f97316", linewidth=2, label="プロダクトB")
ax.fill(angles, values_b, color="#f97316", alpha=0.25)

ax.set_xticks(angles[:-1])
ax.set_xticklabels(metrics)
ax.set_yticks([3, 4, 5])
ax.set_ylim(0, 5)
ax.set_title("KPI 比較レーダーチャート")
ax.legend(loc="upper right", bbox_to_anchor=(1.3, 1.1))

fig.tight_layout()

plt.show()

matplotlib の極座標を使用しますの図

読み方のポイント #

  • 指標ごとの面積が広いほど性能が高い。重ねることで優劣が一目で分かる。
  • 角度間隔は等間隔にすると比較しやすい。項目が多すぎると読みづらくなる。
  • 主要指標は別途棒グラフなどで補足し、数値も併記すると説得力が増す。

いつ使うか #

  • 適している場面: 5〜8個程度の指標のバランスを一枚で俯瞰したいとき。プロダクト比較やスキル評価に向いています。
  • 不向きな場面: スケールが異なる変数を混在させると面積の解釈が不正確になり、ミスリードを招きます。
  • 代替手段: 棒グラフやダイバージングバーの方が個別指標の差を正確に比較できます。

よくある失敗パターン #

  • スケールの異なる変数の混在: 単位やレンジが異なる変数を正規化せずに描くと面積の意味が崩れます。すべての軸を 0〜1 などに正規化してから描画してください。
  • 軸の数が多すぎる: 10 軸以上になると多角形が円に近づき、個別の指標の差が読みにくくなります。5〜8 軸に絞りましょう。