วอเตอร์ฟอลชาร์ตแสดงผลรวมทีละขั้น

Visualize

วอเตอร์ฟอลชาร์ตแสดงผลรวมทีละขั้น

Created: Last updated: Read time: 1 min

วอเตอร์ฟอลชาร์ตช่วยถอดรหัสว่าอะไรเพิ่มหรือลดรายได้ โดยนำปัจจัยแต่ละขั้นมาบวกต่อกันจนถึงค่าปลายทางให้เห็นเป็นลำดับ

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("Waterfall ปัจจัยเพิ่มลดรายได้")
ax.axhline(0, color="#9ca3af", linewidth=1)
ax.grid(axis="y", alpha=0.2)

fig.tight_layout()

plt.show()

วอเตอร์ฟอลชาร์ตแสดงให้เห็นว่าปัจจัยแต่ละขั้นบวกหรือลดรายได้อย่างไร

จุดที่ควรสังเกต #

  • จัดปัจจัยที่เพิ่มค่าไว้ทางซ้าย และปัจจัยที่ลดไว้ทางขวาเพื่อให้การไหลของเรื่องราวต่อเนื่อง
  • ใช้สีคนละโทนสำหรับค่าเริ่มต้นกับค่าปลายทางเพื่อเน้นก่อนและหลังการเปลี่ยนแปลง
  • หากต้องการอธิบายเหตุการณ์สำคัญให้เพิ่มคำอธิบายสั้นๆ บนสเต็ปที่เกี่ยวข้อง จะช่วยสื่อสารสาระการตัดสินใจได้ดีขึ้น