Muestra el cumplimiento de objetivos con un grafico de bala

Visualize

Muestra el cumplimiento de objetivos con un grafico de bala

Creado: Última actualización: Tiempo de lectura: 2 min

Si quieres listar KPIs y mostrar la distancia al objetivo, el grafico de bala es compacto y efectivo. Las bandas de fondo transmiten el nivel de logro al mismo tiempo.

import matplotlib.pyplot as plt
import numpy as np

metrics = ["CVR", "Valor medio del pedido", "Retencion de suscripcion", "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("Valor del indicador")
ax.set_title("Progreso de KPIs clave (grafico de bala)")
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()

Las bandas de fondo permiten ver el nivel de logro junto con la barra.

Consejos de lectura #

  • Las bandas de fondo representan zonas de logro. Si la barra llega a la banda mas oscura, el KPI supera el objetivo alto.
  • La linea roja vertical es el objetivo. Si la barra la supera, hay sobrecumplimiento; si no llega, queda por debajo.
  • Como caben varios KPIs en un panel, es ideal para reportes semanales resumidos.