バレットチャートで目標達成度を凝縮表示

中級

6.7.8

バレットチャートで目標達成度を凝縮表示

最終更新 2020-05-06 読了時間 1 分
まとめ
  • バレットチャートで実績バーと目標ラインを重ね、KPI 達成度を凝縮表示する。
  • ax.barh で背景ゾーンと実績バーを描き、目標を縦線で重ねる。
  • 複数 KPI を1枚に並べてダッシュボードや週次レポートに使う。

KPI をリストで並べつつ目標との差を示したいときは、バレットチャートが省スペースで効果的です。帯の背景に基準領域を敷くことで、達成度のレベルも同時に伝えられます。

 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import matplotlib.pyplot as plt
import numpy as np

metrics = ["CVR", "客単価", "サブスク継続率", "NPS"]
actual = np.array([0.046, 12_300, 0.78, 32])
target = np.array([0.05, 12_000, 0.8, 35])
thresholds = np.array(
    [
        [0.02, 0.04, 0.06],
        [9000, 11_000, 13_500],
        [0.6, 0.75, 0.85],
        [10, 25, 40],
    ]
)

fig, ax = plt.subplots(figsize=(6.2, 4))
for idx, name in enumerate(metrics):
    base, good, excellent = thresholds[idx]
    ax.barh(idx, excellent, color="#f1f5f9", height=0.8)
    ax.barh(idx, good, color="#cbd5f5", height=0.8)
    ax.barh(idx, base, color="#94a3b8", height=0.8)
    ax.barh(idx, actual[idx], color="#38bdf8", height=0.3)
    ax.plot(
        [target[idx], target[idx]],
        [idx - 0.4, idx + 0.4],
        color="#ef4444",
        linewidth=2,
    )
    ax.text(
        actual[idx] * 1.02,
        idx,
        f"{actual[idx]:.2f}" if idx != 1 else f"{actual[idx]:,.0f}",
        va="center",
        ha="left",
        fontsize=9,
    )

ax.set_yticks(range(len(metrics)), labels=metrics)
ax.set_xlabel("指標の値")
ax.set_title("主要KPIの進捗(バレットチャート)")
ax.set_xlim(0, max(thresholds[:, -1]) * 1.05)
ax.grid(axis="x", alpha=0.2)
ax.spines[["right", "top"]].set_visible(False)

fig.tight_layout()

plt.show()

帯の背景に基準領域を敷くことで、達成度のレベルも同時に伝えられますの図

読み方のポイント #

  • 背景の帯は達成レベルを示すゾーンです。濃い部分までバーが伸びていれば上位目標を達成しています。
  • 赤い縦線はターゲット値。バーが右に突き抜けていれば目標超過、届かない場合は未達を示します。
  • 複数指標を1枚に詰め込めるので、週次レポートなどで一覧表示すると省スペースです。

いつ使うか #

  • 適している場面: KPIの実績値を目標やベンチマーク帯と同時に表示したいとき。ゲージ系チャートの中で最も省スペースです。
  • 不向きな場面: 比較対象が多すぎる(帯が3段階以上)と色の区別が難しくなり、かえって分かりにくくなります。
  • 代替手段: 単純な達成率のみ示したい場合は進捗バーや棒グラフの方がシンプルです。

よくある失敗パターン #

  • 背景帯の意味が不明: 背景のグレー帯が何を意味するか(良/普通/不良など)を凡例なしに表示すると読者が判断できません。帯の意味を明記してください。
  • 目標マーカーが見えにくい: 目標線が棒や背景と同化してしまうと最も重要な情報が伝わりません。コントラストの高い色や太めの線で目標を目立たせましょう。