Cleveland Dot Plot

Cleveland Dot Plot

Categoría Comparación
Ejemplo de Cleveland Dot Plot

Qué es

Puntos posicionados a lo largo de un eje para representar valores individuales o distribuciones. Más honesto que las barras cuando los valores no empiezan en cero.

Para qué sirve

Para comparar valores cuando el punto de referencia no es necesariamente cero, o para mostrar múltiples medidas de la misma categoría.

Cómo leerlo

Anatomía

El diagrama aísla dos elementos, no tres: a diferencia de la barra y del lollipop, aquí no hay ningún trazo entre el eje y el punto. El eje cuantitativo, que puede empezar en cualquier valor porque no hay ningún elemento visual midiendo distancia desde un origen; y el punto, la única marca del gráfico, cuya posición exacta sobre ese eje es lo único que codifica el valor. El eje categórico solo ordena y etiqueta, no transmite magnitud. Sin un tallo ni una barra que sugiera distancia desde cero, el lector no tiene ninguna pista visual que lo empuje a comparar largos: compara posiciones. Por eso el dot plot, a diferencia de sus dos primos, puede recortar el eje sin exagerar nada, siempre que mantenga líneas guía visibles para ubicar cada punto con precisión.

Fachada de ventanas circulares en grilla, con una sola ventana entreabierta en un ángulo distinto a las demás: la posición de un punto que se desvía del resto se detecta de inmediato, sin necesitar barras

Por qué funciona

Fundamento perceptivo

No requiere eje en cero, lo que permite enfocarse en las diferencias reales entre valores. Excelente para mostrar rangos (mínimo-máximo) con un punto central.

Errores comunes

  • Sin línea de referencia

    Un dot plot no tiene la superficie continua de una barra que ancla visualmente cada valor al cero — solo un punto flotando sobre el eje. Sin líneas de guía tenues que conecten cada punto con el eje, o sin una grilla de fondo, el lector debe proyectar mentalmente la posición del punto hacia la escala, lo que introduce error de lectura.

  • Puntos del mismo tamaño para valores distintos

    Si el dot plot usa el tamaño del punto para codificar una segunda variable (además de la posición), pero los puntos apenas varían de tamaño entre sí, esa codificación se vuelve inútil — el lector no logra distinguir un punto ligeramente más grande de otro, y termina ignorando la dimensión completa.

  • Confundirlo con un scatter plot

    Un dot plot ordena las categorías en un eje discreto y usa el otro eje solo para el valor; un scatter plot tiene dos ejes numéricos continuos y cada punto representa una observación con dos medidas distintas. Mezclar la lógica de ambos —por ejemplo, agregando una tendencia o correlación a un dot plot— confunde al lector sobre qué tipo de relación se está mostrando.

Dónde se usa

Contextos de aplicación

Temperaturas entre ciudades
01

Temperaturas entre ciudades

Comparación de un indicador como la temperatura media, donde el rango real de los datos está lejos de cero y forzar el eje a partir ahí solo aplastaría las diferencias que sí importan.

Puntajes o marcadores
02

Puntajes o marcadores

Comparación de puntuaciones o resultados entre equipos, partidos o categorías, donde lo relevante es la posición relativa de cada uno, no la distancia hasta un origen en cero.

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.

Matplotlib License (estilo BSD)
Matplotlib: gráfico de barras

scatter() con una categoría de texto en el eje Y funciona sin ningún truco adicional — matplotlib ubica cada categoría en una posición equiespaciada automáticamente.

import matplotlib.pyplot as plt

categorias = ["Sucursal Oeste", "Sucursal Este", "Sucursal Sur", "Sucursal Norte", "Sucursal Centro"]
valores = [74, 58, 91, 67, 82]

fig, ax = plt.subplots(figsize=(8, 5))
ax.scatter(valores, categorias, color="#760D3E", s=110)
ax.set_xlim(0, 100)
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.

No-code
Observable Freemium
JavaScript
D3.js Open SourceVega-Lite Open Source
Python
Matplotlib Open SourceSeaborn Open SourceAltair Open Source
R
ggplot2 Open Source

Con datos reales

Ejemplos de uso.

¿Qué tan distinto es el clima entre capitales europeas?

Temperatura media anual (promedio de máximas y mínimas anuales) en 8 ciudades de Europa.

Atenas
18.0°C
Roma
15.0°C
Madrid
14.5°C
París
12.5°C
Londres
11.5°C
Berlín
9.5°C
Moscú
5.0°C
Reikiavik
4.5°C

Fuente: Agencias meteorológicas nacionales, vía Current Results

Gráficos relacionados

Variantes y alternativas cercanas.