En los dos primeros posts de nuestra serie, hemos sentado las bases de ggplot2. Ya entiendes la “Gramática de los Gráficos” y sabes cómo crear las visualizaciones más esenciales: diagramas de dispersión, barras, líneas e histogramas. Tus gráficos ya son funcionales: muestran los datos.
Ahora, vamos a dar el siguiente paso, el que separa un borrador de un producto final: vamos a hacer que nuestros gráficos comuniquen. Una visualización efectiva no solo muestra los datos, sino que cuenta una historia, guía la atención del lector y es comprensible por sí misma, sin necesidad de un párrafo de explicación.
En este post, aprenderás dos habilidades clave para lograrlo:
Añadir más dimensiones a tus gráficos usando las estéticas (aes) de color, fill, size y shape.
Pulir la presentación con títulos, etiquetas y subtítulos claros usando la potente función labs().
Al final, sabrás cómo transformar un gráfico básico en una visualización profesional lista para cualquier informe o presentación.
1. Más allá de X e Y: Añadiendo capas de información con estéticas
Hasta ahora, hemos usado aes() para mapear variables a los ejes x e y. Pero su poder va mucho más allá. Podemos mapear otras variables a diferentes atributos visuales para codificar más información en un solo gráfico.
color y fill: La estética más poderosa
Las estéticas color (para puntos y líneas) y fill (para el relleno de barras y otras áreas) son, con diferencia, las más útiles para distinguir grupos.
Un error común: Mapear vs. Fijar un color
Antes de empezar, es crucial entender una distinción clave. * Si quieres que el color represente una variable de tus datos, debes ponerlo DENTRO de aes(). * Si quieres fijar un color para todos los elementos del gráfico (ej. hacer todos los puntos azules), debes ponerlo FUERA de aes(), dentro de la función geom.
Veamos la diferencia:
Code
library(tidyverse)# Incorrecto: ggplot no entiende "blue" como una variable en los datos# ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = "blue")) + # geom_point()# Correcto: Fijamos el color a "blue" para todos los puntosggplot(data = mpg, mapping =aes(x = displ, y = hwy)) +geom_point(color ="blue")
Usando color para distinguir grupos en un diagrama de dispersión
Recordemos nuestro gráfico del primer post. Ahora, vamos a usar el color para ver si el tipo de tracción (drv) influye en la relación entre cilindrada y consumo.
Code
ggplot(data = mpg, mapping =aes(x = displ, y = hwy, color = drv)) +geom_point()
Usando ‘color’ para distinguir el tipo de tracción (f=delantera, r=trasera, 4=4x4).
¡Excelente! Ahora el gráfico es mucho más rico. Vemos claramente tres grupos: los coches con tracción delantera (f) son los más eficientes, mientras que los de 4x4 (4) son los que tienen los motores más grandes y el peor consumo.
Usando fill para gráficos de barras apiladas
Con geom_bar o geom_col, usamos fill para colorear el interior de las barras. Si mapeamos una segunda variable categórica a fill, ggplot2 creará automáticamente un gráfico de barras apiladas.
Pregunta: ¿Cómo se distribuyen los tipos de tracción (drv) dentro de cada clase de coche (class)?
Gráfico de barras apiladas que muestra la distribución de la tracción por clase de coche.
Esta visualización nos permite comparar la composición interna de cada categoría. Por ejemplo, vemos que casi todos los “suv” son 4x4, mientras que los coches “compact” y “midsize” son predominantemente de tracción delantera.
Otras estéticas útiles: shape, size y alpha
shape: Cambia la forma de los puntos. Es útil para distinguir un número pequeño de categorías (más de 5 o 6 formas diferentes son difíciles de distinguir).
size: Cambia el tamaño de los puntos o el grosor de las líneas. Puede mapearse a una variable continua.
alpha: Cambia la transparencia. Es muy útil en diagramas de dispersión con muchos puntos superpuestos para ver las áreas de mayor densidad.
Veamos un ejemplo combinando color y shape.
Code
ggplot(data = mpg, mapping =aes(x = displ, y = hwy, color = drv, shape = drv)) +geom_point()
Combinando color y forma para codificar la misma variable.
Combinar color y shape es una buena práctica de accesibilidad, ya que permite distinguir los grupos incluso en una impresión en blanco y negro.
2. Puliendo la presentación: La función labs()
Un gráfico sin etiquetas es un gráfico incompleto. La función labs() es tu “centro de control” para todos los textos del gráfico. Te permite añadir títulos, cambiar las etiquetas de los ejes y modificar los títulos de las leyendas de forma sencilla.
Vamos a tomar nuestro último gráfico y a hacerlo “listo para publicar”.
Code
ggplot(data = mpg, mapping =aes(x = displ, y = hwy, color = drv, shape = drv)) +geom_point() +labs(title ="Relación entre Cilindrada del Motor y Consumo de Combustible",subtitle ="Los coches con tracción delantera (f) son los más eficientes",caption ="Fuente de datos: dataset 'mpg' de ggplot2.",x ="Cilindrada del Motor (Litros)",y ="Consumo en Autopista (Millas por Galón)",color ="Tipo de Tracción", # Cambia el título de la leyenda de colorshape ="Tipo de Tracción"# Cambia el título de la leyenda de forma )
Un gráfico final, pulido con títulos y etiquetas claras.
Observa cómo con una sola función (labs()) hemos transformado un gráfico funcional en una pieza de comunicación visual completa y autoexplicativa.
Bonus: Un toque final con los temas (theme)
ggplot2 incluye una serie de temas predefinidos que te permiten cambiar el aspecto general de tu gráfico con una sola línea de código. El tema por defecto es theme_grey(), pero hay otros muy populares.
Vamos a aplicar theme_minimal() a nuestro gráfico final para darle un aspecto más limpio y moderno.
Code
ggplot(data = mpg, mapping =aes(x = displ, y = hwy, color = drv, shape = drv)) +geom_point() +labs(title ="Relación entre Cilindrada del Motor y Consumo de Combustible",subtitle ="Los coches con tracción delantera (f) son los más eficientes",caption ="Fuente de datos: dataset 'mpg' de ggplot2.",x ="Cilindrada del Motor (Litros)",y ="Consumo en Autopista (Millas por Galón)",color ="Tipo de Tracción",shape ="Tipo de Tracción" ) +theme_minimal() # ¡La única línea que hemos añadido!
El mismo gráfico con theme_minimal() aplicado.
Otros temas que puedes probar son theme_light(), theme_bw() o theme_classic(). ¡Experimenta con ellos!
Conclusión y próximos pasos
Hoy has aprendido a llevar tus visualizaciones al siguiente nivel. Ya sabes cómo:
Codificar más información en tus gráficos mapeando variables a color, fill, shape y otras estéticas.
Hacer que tus gráficos comuniquen claramente su mensaje añadiendo títulos y etiquetas descriptivas con labs().
Cambiar rápidamente el estilo visual de tus gráficos usando los temas incorporados.
Ahora estás listo para una de las técnicas más poderosas de ggplot2: las facetas. En el próximo post, aprenderemos a dividir nuestros datos en subgrupos y a crear un panel de gráficos para contar historias aún más complejas y detalladas.
Este post es parte de la serie “Iniciación a ggplot2: Guía para crear visualizaciones en R”.