Dumbbell Chart
Dumbbell Chart
Qué es
Dos puntos conectados por una línea para cada categoría, representando dos valores sobre un mismo eje cuantitativo (típicamente dos momentos en el tiempo o dos grupos). También llamado Connected Dot Plot. Muestra el cambio o la brecha entre ambos — la distancia solo comunica algo si la escala del eje es visible.
Para qué sirve
Para comparar dos medidas del mismo ítem y enfatizar la magnitud y dirección del cambio. Ideal para mostrar evolución antes/después.
Cómo leerlo
Anatomía
También llamado "barbell chart" o "gap chart", este gráfico reduce cada categoría a dos puntos sobre un mismo eje cuantitativo, unidos por una línea. Esa condición —el mismo eje, la misma unidad— no es opcional: dos escalas distintas convierten la distancia entre los puntos en un truco visual y no en un dato, el error más citado por las guías de referencia sobre este formato. El color no codifica quién va ganando: identifica la serie. Un punto inicial en un tono neutro y un punto final en un tono marcado se mantienen así en todas las filas, incluso en las que la categoría se mueve en la dirección contraria a las demás — ahí es donde se nota si el color se usó bien: la fila sigue siendo reconocible sin necesidad de leer el eje. La línea conectora es el elemento con el peso analítico real: su largo es la magnitud del cambio y su dirección (hacia dónde apunta el punto final) es si la categoría subió o bajó, la pregunta que este gráfico existe para responder. Por último, el orden de las filas no es alfabético ni arbitrario: van de mayor a menor brecha, para que las categorías con la disparidad más grande queden arriba, visibles de inmediato.
Por qué funciona
Fundamento perceptivo
La distancia entre los dos puntos comunica la magnitud del cambio o diferencia de forma inmediata. La dirección (izquierda/derecha) indica quién lidera.
Errores comunes
Más de dos puntos por categoría
Un dumbbell chart está construido para mostrar exactamente dos valores por fila —típicamente un antes y un después, o dos grupos que se comparan— conectados por una línea. Intentar agregar un tercer punto en la misma fila rompe la lectura de "distancia entre dos extremos" que le da su nombre y su utilidad.
Sin ordenar por la magnitud del cambio
Cuando las filas se dejan en el orden en que llegaron los datos (alfabético o de carga), el lector no puede ver de inmediato qué categoría tuvo el mayor cambio entre los dos puntos. Ordenar las filas por el tamaño de la diferencia —de mayor a menor brecha— convierte al gráfico en un ranking de cuánto cambió cada categoría, que suele ser la pregunta real detrás del dato.
Colores que no distinguen los dos momentos
Si los dos puntos de cada fila usan colores muy parecidos entre sí, el lector no puede identificar sin ayuda de una leyenda cuál punto representa el valor inicial y cuál el final. Un color consistente y contrastante para cada uno de los dos momentos —reforzado en la leyenda— es lo que hace que la línea entre ambos se lea como una flecha de cambio, no como un simple trazo decorativo.
Dónde se usa
Contextos de aplicación

Brecha salarial y comparación entre grupos
Comparar dos valores del mismo tipo entre dos grupos, como hombres y mujeres, dos países o dos segmentos, sobre un mismo eje, para que la distancia entre ambos sea la protagonista.

Objetivo vs. resultado
Seguir cuánto falta entre una meta planificada y el avance real, como una meta de ahorro, una cuota de ventas o un KPI, con el punto inicial y el punto final sobre la misma escala.
Cómo construirlo
El mismo gráfico, en 11 librerías open source
Cada librería resuelve las mismas decisiones de diseño, como la escala, el espaciado entre barras o la inserción de la etiqueta de valor, de un modo distinto. Algunas las automatizan; otras las dejan explícitas en el código, a criterio de quien lo escribe. Comparar once implementaciones con los mismos datos y el mismo color de marca aísla esa diferencia, que de otro modo queda oculta detrás de estilos visuales distintos.
vlines() dibuja el palito y scatter() cada extremo por separado, en dos llamadas —el mismo patrón de dos capas independientes que ya apareció en el lollipop, con dos puntos en vez de uno.
import matplotlib.pyplot as plt
# BCN: sueldo minimo chileno nominal vs real ajustado por IPC
anios = ["1999", "2005", "2010", "2015", "2020", "2025"]
nominal = [90500, 127500, 172000, 241000, 320500, 510636]
real = [232946, 277004, 312781, 371760, 434522, 516206]
fig, ax = plt.subplots(figsize=(8, 5))
ax.vlines(anios, nominal, real, color="#6B635E", linewidth=1.5)
ax.scatter(anios, nominal, color="#9C9187", s=70, label="Nominal")
ax.scatter(anios, real, color="#760D3E", s=70, label="Real (abr. 2025)")
ax.legend(frameon=False)
plt.tight_layout()
plt.show()Herramientas para construirlo
No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.
Términos relacionados
Con datos reales
Ejemplos de uso.
El sueldo mínimo de 1999 vale más de lo que parece
Ingreso mínimo mensual de Chile: pesos nominales del año del reajuste vs. pesos equivalentes de abril de 2025 (ajustado por IPC).
Fuente: Biblioteca del Congreso Nacional de Chile (BCN), Asesoría Técnica Parlamentaria, mayo 2025
Gráficos relacionados
