Code
# Cargar la librería
library(tidyverse)
# Boxplot para una única variable
ggplot(data = mpg, mapping = aes(y = hwy)) +
geom_boxplot() +
labs(title = "Distribución del Consumo en Autopista (hwy)")
Roberto Gil-Saura
June 27, 2025
Cuando analizamos una variable numérica, la media nos da una idea del centro, pero nos deja sin respuesta ante preguntas de análisis: ¿cómo se distribuyen los datos alrededor de ese centro? ¿Están todos los valores agrupados o muy dispersos? ¿Hay valores atípicos extremos? Para responder a estas preguntas, necesitamos ir más allá de los simples promedios.
Aquí es donde entra en juego una de las herramientas más ingeniosas y eficientes de la visualización de datos: el diagrama de caja y bigotes, o boxplot. Creado por el estadístico John Tukey, un boxplot es como una radiografía de tu variable: te permite ver su estructura interna de un solo vistazo.
En este post, nos sumergirnos en el mundo de los boxplots con ggplot2. No solo aprenderás a crearlos con geom_boxplot, sino que también descubriremos a su primo más moderno y revelador, el violin plot (geom_violin). Al final, sabrás exactamente cuándo usar cada uno y cómo combinarlos para el mejor storytelling sobre tus datos.
geom_boxplot)Antes de crear un boxplot, es fundamental entender qué representa cada una de sus partes. Un boxplot resume la distribución de una variable numérica en cinco estadísticas clave, conocidas como el “resumen de cinco números”.

Vamos a usar el dataset mpg para explorar la distribución del consumo en autopista (hwy).
El poder de los boxplots se desata cuando los usamos para comparar la distribución de una variable numérica a través de diferentes grupos categóricos.
Pregunta: ¿Cómo se compara el consumo en autopista (hwy) entre las diferentes clases de coche (class)?

Esta visualización es muy rica. De un vistazo podemos concluir: * Medianas: Los coches compactos (compact) y subcompactos (subcompact) tienen las medianas de consumo más altas (son más eficientes). * Dispersión: La clase suv tiene una dispersión enorme (la caja es muy alta), lo que indica una gran variabilidad en la eficiencia de los SUVs. * Outliers: Hay varios outliers, especialmente un minivan con un consumo inusualmente bajo.
geom_violin)Un boxplot es una gran vusualización, pero tiene una limitación: oculta la forma de la distribución. No podemos saber si los datos dentro de la caja están distribuidos uniformemente, si tienen un solo pico (unimodal) o varios picos (multimodal).
El violin plot resuelve este problema. Esencialmente, es un boxplot combinado con un gráfico de densidad.
Vamos a recrear nuestro gráfico anterior usando geom_violin().

¡La diferencia nos dice cosas de los datos! Vemos cosas que el boxplot oculta:
compact y midsize no es simétrica; tiene dos picos (es bimodal). Esto podría indicar que hay dos subgrupos de coches dentro de esas clases.suv está claramente sesgada hacia valores más bajos (menos eficientes).¿Y si no queremos elegir? ¿Y si queremos la robustez estadística del boxplot y la riqueza visual del violin plot? Con ggplot2, podemos tenerlo todo. Simplemente, añadimos ambas geometrías al mismo gráfico.
ggplot(data = mpg, mapping = aes(x = class, y = hwy, fill = class)) +
geom_violin(alpha = 0.7, show.legend = FALSE) + # Hacemos el violín semitransparente
geom_boxplot(width = 0.1, fill = "white", show.legend = FALSE) + # Un boxplot estrecho y blanco en el centro
labs(
title = "Visión Completa: Boxplot dentro de un Violin Plot",
x = "Clase de Coche",
y = "Consumo en Autopista (Millas por Galón)"
) +
theme_minimal()
Esta es, para muchos, la visualización definitiva para comparar distribuciones. Obtenemos: 1. La forma de la distribución gracias al violín. 2. Los estadísticos clave (mediana, cuartiles) de forma precisa gracias al boxplot.
La elección de la visualización depende siempre de la historia que quieras contar y de tu audiencia.
geom_boxplot cuando:
geom_violin cuando:
Ahora tienes en tu libro de notas dos de las visualizaciones más potentes para ir más allá de las medias y entender verdaderamente la estructura de tus datos.
Tukey, J. W. (1977). Exploratory Data Analysis. Addison-Wesley.
Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. https://doi.org/10.1007/978-3-319-24277-4
Healy, K. (2018). Data Visualization: A Practical Introduction. Princeton University Press.