Lollipop Chart
Lollipop Chart

Qué es
Variante minimalista del gráfico de barras: una línea delgada con un punto al final en lugar de una barra sólida. Reduce la tinta sin perder información.
Para qué sirve
Cuando tienes muchas categorías y el gráfico de barras parece visualmente pesado. Perfecto para rankings largos de más de 15 ítems.
Cómo leerlo
Anatomía
A diferencia de una barra sólida, acá la codificación se divide en dos partes con roles distintos: el tallo, una guía visual delgada que conecta la categoría con su valor pero no codifica el dato por sí sola, es un vestigio de la barra que ayuda al ojo a ubicar la distancia desde cero; y el punto, el único atributo que sí codifica el valor real, a través de su posición exacta sobre la escala. Por eso hay que leer la posición del punto con precisión, no el largo aparente del tallo. Como el tallo sigue actuando como una barra adelgazada, la escala debería comenzar en cero igual que en un gráfico de barras: truncarla exagera las diferencias tanto como truncaría una barra sólida.
Por qué funciona
Fundamento perceptivo
Reduce drásticamente el 'ruido de tinta' sin perder precisión. Facilita la lectura en rankings largos donde las barras llenas se vuelven opresivas.
Errores comunes
Punto poco visible
El círculo al final de cada línea es el elemento que realmente codifica el valor — la línea es solo una guía visual hacia el eje. Si el punto es muy pequeño, tiene poco contraste de color contra el fondo, o se dibuja con el mismo grosor que la línea, el lector pierde exactamente el elemento que debería llamar la atención primero.
Línea demasiado gruesa
Cuando el trazo que conecta el eje con el punto es tan grueso como el propio punto, el ojo ya no distingue con claridad dónde termina la guía y empieza el dato — el lollipop empieza a leerse como una barra angosta con un bulto al final, perdiendo la ventaja de peso visual liviano que lo distingue de un gráfico de barras.
Usarlo con demasiadas categorías
El lollipop chart existe en gran parte por su ligereza visual frente a una barra, pero esa ventaja se pierde con más de 30 o 40 categorías: las líneas se apelmazan, los puntos se solapan entre sí, y la lectura vertical se vuelve tan pesada como la de cualquier otro gráfico saturado.
Orden de las categorías
Mostrar las filas en el orden en que llegan los datos (alfabético, cronológico de carga, azar) obliga a escanear todo el gráfico para encontrar el máximo y el mínimo. Ordenar de mayor a menor convierte esa búsqueda en inmediata: el ranking se lee de arriba hacia abajo sin esfuerzo. La excepción es cuando ya existe un orden con sentido propio ajeno al valor, como días de la semana o meses: ahí conviene mantenerlo aunque no quede de mayor a menor.
Sin ordenar
Ordenado
El fondo oscuro del panel correcto es una decisión de presentación de este comparador, no una variable que codifique información: la validez del ranking depende exclusivamente del orden de las categorías, no del color de fondo que acompaña a cada panel.
Dónde se usa
Contextos de aplicación

Ranking de países
Comparación de un indicador entre 20 o más países, donde el volumen de categorías haría que un gráfico de barras se vea pesado y difícil de escanear.

Comparación de selecciones o equipos
Ranking de desempeño entre muchas selecciones o equipos, por ejemplo puntos, goles o posiciones, donde el punto final es lo único que importa leer.
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.
hlines() dibuja el palito y scatter() el dulce en la punta — dos funciones independientes, ninguna sabe de la existencia de la otra.
import matplotlib.pyplot as plt
categorias = ["Producto E", "Producto D", "Producto C", "Producto B", "Producto A"]
valores = [61, 34, 88, 45, 72]
fig, ax = plt.subplots(figsize=(8, 5))
ax.hlines(y=categorias, xmin=0, xmax=valores, color="#760D3E", linewidth=2)
ax.scatter(valores, categorias, color="#760D3E", s=90, zorder=3)
for spine in ("top", "right", "left"):
ax.spines[spine].set_visible(False)
plt.tight_layout()
plt.show()Herramientas para construirlo
No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.
Paso a paso
Cómo se construye.
Términos relacionados
Con datos reales
Ejemplos de uso.
¿Qué tanto se usa cada lenguaje de programación?
Porcentaje de desarrolladores que trabajó extensamente con cada lenguaje en el último año, todos los encuestados (n=31.771).
Fuente: Stack Overflow, Developer Survey 2025 (Programming, scripting, and markup languages)
Gráficos relacionados
