Σύνοψε την επίτευξη στόχων με διάγραμμα bullet

Visualize

Σύνοψε την επίτευξη στόχων με διάγραμμα bullet

Όταν θέλεις να παραθέσεις KPI και τη διαφορά από τον στόχο, το διάγραμμα bullet είναι εξαιρετικά συμπαγές. Οι ζώνες στο υπόβαθρο δείχνουν το επίπεδο επίτευξης.

import matplotlib.pyplot as plt
import numpy as np

metrics = ["CVR", "Μέση αξία παραγγελίας", "Διατήρηση συνδρομής", "NPS"]
actual = np.array([0.046, 12_300, 0.78, 32])
target = np.array([0.05, 12_000, 0.8, 35])
thresholds = np.array(
    [
        [0.02, 0.04, 0.06],
        [9000, 11_000, 13_500],
        [0.6, 0.75, 0.85],
        [10, 25, 40],
    ]
)

fig, ax = plt.subplots(figsize=(6.2, 4))
for idx, name in enumerate(metrics):
    base, good, excellent = thresholds[idx]
    ax.barh(idx, excellent, color="#f1f5f9", height=0.8)
    ax.barh(idx, good, color="#cbd5f5", height=0.8)
    ax.barh(idx, base, color="#94a3b8", height=0.8)
    ax.barh(idx, actual[idx], color="#38bdf8", height=0.3)
    ax.plot(
        [target[idx], target[idx]],
        [idx - 0.4, idx + 0.4],
        color="#ef4444",
        linewidth=2,
    )
    ax.text(
        actual[idx] * 1.02,
        idx,
        f"{actual[idx]:.2f}" if idx != 1 else f"{actual[idx]:,.0f}",
        va="center",
        ha="left",
        fontsize=9,
    )

ax.set_yticks(range(len(metrics)), labels=metrics)
ax.set_xlabel("Τιμή δείκτη")
ax.set_title("Πρόοδος βασικών KPI (διάγραμμα bullet)")
ax.set_xlim(0, max(thresholds[:, -1]) * 1.05)
ax.grid(axis="x", alpha=0.2)
ax.spines[["right", "top"]].set_visible(False)

fig.tight_layout()

plt.show()

Οι ζώνες στο υπόβαθρο δείχνουν τα επίπεδα επίτευξης.

Συμβουλές ανάγνωσης #

  • Οι ζώνες του υποβάθρου αντιστοιχούν σε επίπεδα επίτευξης. Αν η μπάρα φτάνει στη σκοτεινή ζώνη, ο στόχος ξεπεράστηκε.
  • Η κόκκινη κάθετη γραμμή είναι ο στόχος. Αν η μπάρα την περνά, υπάρχει υπέρβαση· αν όχι, υπάρχει υστέρηση.
  • Μπορείς να χωρέσεις πολλά KPI σε μία προβολή, ιδανικό για εβδομαδιαίες αναφορές.