Identifica la fuga por etapa con un grafico de embudo

Visualize

Identifica la fuga por etapa con un grafico de embudo

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

El grafico de embudo es ideal para mostrar la perdida entre etapas desde el ingreso hasta la conversion. Los trapezoides transmiten el volumen restante por su ancho.

import numpy as np
import matplotlib.pyplot as plt

steps = ["Visita", "Vista de producto", "Agregar al carrito", "Datos de pago", "Compra completada"]
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("Embudo de compra en 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()

El ancho de los trapezoides hace evidente la perdida.

Consejos de lectura #

  • El ancho de cada etapa representa usuarios restantes; los saltos grandes son cuellos de botella.
  • Mostrar CVR del inicio al final refuerza el impacto.
  • Cambia los nombres de las etapas para adaptarlo a tu flujo.