ホライゾンチャートでシーズン変動を圧縮表示

上級

6.7.9

ホライゾンチャートでシーズン変動を圧縮表示

最終更新 2020-05-20 読了時間 2 分
まとめ
  • ホライゾンチャートで時系列の偏差を色帯に折りたたみ、省スペースで変動を表現する。
  • ax.fill_between で正負の偏差を多段の色帯に分割し、振幅を濃淡で示す。
  • 季節変動が大きいセッション数や売上の周期パターンを限られたスペースで比較したいときに使う。

季節変動が大きい系列を限られたスペースで見せたいときは、帯を折りたたむホライゾンチャートが役立ちます。振幅を色と濃さで表現するため、上下の変化が直感的に把握できます。

 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
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 48)
baseline = 120 + 30 * np.sin(2 * np.pi * x / 12)
trend = 0.6 * x
rng = np.random.default_rng(7)
series = baseline + trend + rng.normal(0, 8, size=x.size)
centered = series - series.mean()
band = 20
levels = 3
palette_pos = ["#bae6fd", "#38bdf8", "#0ea5e9"]
palette_neg = ["#fecaca", "#f87171", "#ef4444"]

fig, ax = plt.subplots(figsize=(6.2, 3.6))
for level in range(levels):
    upper = np.clip(centered - level * band, 0, band)
    if np.any(upper > 0):
        ax.fill_between(
            x,
            level * band,
            level * band + upper,
            color=palette_pos[level],
            step="mid",
        )
    lower = np.clip(-centered - level * band, 0, band)
    if np.any(lower > 0):
        ax.fill_between(
            x,
            -(level * band + lower),
            -level * band,
            color=palette_neg[level],
            step="mid",
        )

ax.axhline(0, color="#475569", linewidth=1)
positions = range(0, 48, 6)
ax.set_xticks(positions, labels=[f"{idx + 1}月" for idx, _ in enumerate(positions)])
ax.set_yticks([])
ax.set_title("週次セッション数のホライゾンチャート(基準値からの偏差)")
ax.set_xlabel("週")
ax.spines[["top", "right", "left"]].set_visible(False)

fig.tight_layout()

plt.show()

振幅を色と濃さで表現するため、上下の変化が直感的に把握できますの図

読み方のポイント #

  • 色の濃さが増えるほど偏差が大きい領域です。温度図のようにピーク時期を捉えられます。
  • 0ラインより下はマイナス偏差。暖色で塗り分けることで減少期を強調できます。
  • 複数系列を横に並べると、限られたスペースでも季節パターンの差を比較しやすくなります。

いつ使うか #

  • 適している場面: 多数の時系列を縦に圧縮して並べ、トレンドの概況を省スペースで比較したいとき。
  • 不向きな場面: 折り返しの仕組みに慣れていない読者には直感的に理解しにくいため、説明が必要です。
  • 代替手段: 一般的な聴衆にはスパークラインパネルの方が直感的に伝わりやすいです。

よくある失敗パターン #

  • バンド数が多すぎる: 折り返しのバンド数を増やしすぎると色の重なりが複雑になり直感的に読めません。2〜3 バンドに抑えてください。
  • 読み方の説明不足: ホライゾンチャートは馴染みが薄いため、説明なしに提示すると読者が混乱します。凡例と読み方の注釈を必ず付けてください。