Ένα waterfall chart δείχνει πώς κάθε παράγοντας προσθέτει ή αφαιρεί αξία από τα έσοδα μέχρι να φτάσουμε στο τελικό ποσό, κρατώντας ορατή όλη τη διαδρομή.
import numpy as np
import matplotlib.pyplot as plt
labels = ["Βάση", "Νέοι πελάτες", "Upsell υφιστάμενων", "Ακυρώσεις", "Εκπτώσεις", "Τελικό"]
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()

Τι αξίζει να επισημάνετε #
- Τοποθετήστε τους θετικούς συντελεστές στα αριστερά και τους αρνητικούς στα δεξιά για να ρέει λογικά η ιστορία.
- Δώστε ξεχωριστό χρώμα στην αρχική και στην τελική τιμή ώστε να ξεχωρίζουν από τα ενδιάμεσα βήματα.
- Για κρίσιμα σημεία, προσθέστε σύντομα annotations πάνω στα σκαλοπάτια ώστε το σκεπτικό των αποφάσεων να γίνεται ξεκάθαρο.