スパークラインパネルで複数指標をミニ表示

中級

6.7.20

スパークラインパネルで複数指標をミニ表示

最終更新 2020-01-03 読了時間 1 分
まとめ
  • 複数指標のミニ折れ線を格子状に並べて全体トレンドを一覧する。
  • plt.subplotsでグリッドを作り、各セルにax.plotax.fill_betweenを配置。
  • ダッシュボードのトップ画面で主要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
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(9)
metrics = ["UU", "PV", "CVR", "注文数", "解約率", "NPS"]
series = []
for base in [40, 120, 3.2, 60, 1.8, 25]:
    trend = base + np.linspace(-3, 5, 12)
    noise = rng.normal(0, base * 0.05, size=12)
    series.append(trend + noise)

fig, axes = plt.subplots(2, 3, figsize=(6.4, 4.2), sharex=True)
for ax, metric, values in zip(axes.flat, metrics, series):
    ax.plot(values, color="#0ea5e9", linewidth=1.8)
    ax.fill_between(range(len(values)), values, alpha=0.15, color="#bae6fd")
    ax.set_title(metric, fontsize=11, pad=6)
    ax.set_xticks([0, 5, 11], labels=["1月", "6月", "12月"], fontsize=8)
    ax.set_yticks([])
    ax.spines[["top", "right", "left"]].set_visible(False)
    latest = values[-1]
    ax.text(len(values) - 0.4, latest, f"{latest:.1f}", ha="right", va="bottom", fontsize=9)

for ax in axes[-1]:
    ax.set_xlabel("月")

fig.suptitle("主要指標のスパークラインパネル", fontsize=14, y=0.98)
fig.tight_layout()

plt.show()

数値ラベルを添えて、細部はコンパクトにまとめますの図

読み方のポイント #

  • 小さな折れ線を並べることで、一覧性とタイムリーな変化を両立できます。
  • 目盛りを省略しつつ最新値だけ表示すると、視線が最新の状態に集中します。
  • 詳細分析は個別ページで行い、トップ画面ではスパークラインで全体の空気感を共有するのがおすすめです。

いつ使うか #

  • 適している場面: ダッシュボードや表の中に複数のミニ折れ線を並べてスペースを節約したいとき。
  • 不向きな場面: 軸や目盛りがないため、系列間の絶対値を正確に比較する用途には適しません。
  • 代替手段: 正確な値比較が必要ならスモールマルチプル形式のファセットグラフを使ってください。

よくある失敗パターン #

  • Y軸スケールの不統一: 各スパークラインのスケールが異なると振幅の比較が不正確になります。比較が目的なら同一スケールに揃えてください。
  • トレンド以外の情報の欠落: 最小値・最大値・現在値などの数値を併記しないとスパークラインだけでは定量的な情報が伝わりません。KPI 数値を隣に表示しましょう。