Το διαγραμμα funnel ειναι ιδανικο για να δειξει τη μειωση απο την εισοδο μεχρι τη μετατροπη. Τα τραπεζια μεταφερουν το υπολοιπο με το πλατος τους.
import numpy as np
import matplotlib.pyplot as plt
steps = ["Επισκεψη", "Προβολη προϊοντος", "Προσθηκη στο καλαθι", "Στοιχεια πληρωμης", "Ολοκληρωση αγορας"]
counts = np.array([12000, 5400, 2600, 1800, 1250])
max_width = counts[0]
fig, ax = plt.subplots(figsize=(6, 4))
y_positions = np.arange(len(steps), 0, -1)
for idx, (step, count) in enumerate(zip(steps, counts)):
width = count / max_width
left = 0.5 - width / 2
ax.fill_between(
[left, left + width],
[y_positions[idx]] * 2,
[y_positions[idx] - 0.8] * 2,
color=plt.cm.Blues(0.3 + idx * 0.12),
)
ax.text(
0.5,
y_positions[idx] - 0.4,
f"{step}\n{count:,}",
ha="center",
va="center",
color="white",
fontsize=11,
)
ax.set_xlim(0, 1)
ax.set_ylim(0, len(steps) + 0.5)
ax.axis("off")
ax.set_title("Απωλειες στο funnel αγορας e-commerce")
conversion = counts[-1] / counts[0]
ax.text(0.02, 0.3, f"CVR: {conversion:.1%}", fontsize=11, fontweight="bold")
fig.tight_layout()
plt.show()

Συμβουλες αναγνωσης #
- Το πλατος καθε σταδιου δειχνει το υπολοιπο. Μεγαλα κενα σημαινουν bottleneck.
- Εμφανισε το CVR απο την κορυφη ως το τελος για να φανει η επιπτωση.
- Αλλαξε τα ονοματα των σταδιων αναλογα με τη ροη του προϊοντος.