ウォーターフォールチャート

中級

6.3.6

ウォーターフォールチャート

最終更新 2020-04-08 読了時間 1 分
まとめ
  • 増減要因を段階的に積み上げて最終値への寄与を示す。
  • ax.barbottomnp.cumsumで浮き上がった棒を描画する。
  • 売上変動の要因分解や予実差異の説明に適している。

売上の増減要因を順番に足し合わせ、最終値に至るまでの寄与を可視化します。

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

labels = ["基準", "新規顧客", "既存アップセル", "解約", "値引き", "最終"]
changes = np.array([300, 80, 40, -60, -30, 0])
cumulative = np.cumsum(np.insert(changes[1:-1], 0, changes[0]))

fig, ax = plt.subplots(figsize=(7, 4))

ax.bar(labels[0], changes[0], color="#64748b")
ax.bar(labels[1:-1], changes[1:-1], bottom=cumulative, color=np.where(changes[1:-1] >= 0, "#22c55e", "#f97316"))
ax.bar(labels[-1], cumulative[-1], color="#2563eb")

for x, y in zip(labels[:-1], np.append(cumulative, cumulative[-1])):
    ax.text(x, y + 10, f"{y:.0f}", ha="center", va="bottom")

ax.set_ylabel("売上(百万円)")
ax.set_title("売上増減要因のウォーターフォール")
ax.axhline(0, color="#9ca3af", linewidth=1)
ax.grid(axis="y", alpha=0.2)

fig.tight_layout()

plt.show()

売上の増減要因を順番に足し合わせ、最終値に至るまでの寄与を可視化しますの図

読み方のポイント #

  • 増加要因を左側、減少要因を右側に配置すると流れが自然になる。
  • 基準値と最終値は異なる色で強調する。
  • 途中のステップに注釈(% など)を加えると意思決定者に伝わりやすい。

いつ使うか #

  • 適している場面: 要因ごとの増減が合計にどう影響するかを示したいとき。売上分析や財務レポートで定番の手法です。
  • 不向きな場面: 要因数が多すぎると図が横長になり読みにくくなるため、主要な要因に絞る必要があります。
  • 代替手段: 要因間の流量を示したいならサンキーダイアグラムの方がフローの全体像を伝えやすいです。

よくある失敗パターン #

  • 増減の色分けが不明確: 増加・減少・合計に同系色を使うと方向性が瞬時に判断できません。増加を青、減少を赤など明確に分けてください。
  • 中間合計の省略: 項目数が多いのに中間合計を入れないと、途中経過が追えず最終値の理解が困難になります。論理的な区切りごとに小計を挿入しましょう。