Cómo crear un gráfico de dispersión al estilo de ‘The Economist’ usando ggplot2 en R

Hassel Fallas

Hassel Fallas

Analista de datos y periodista

En este segundo post te daré algunos trucos extra para aplicar, esta vez, en los diagramas de dispersión. En este ejemplo te guiaré para crear uno de estos gráficos con el estilo que emplea el renombrado  semanario The Economist. Si no leíste el primer artículo de esta serie, lo puedes acceder aquí: Siete pasos para mejorar tus gráficos de barras con ggplot2 en R

Antes de empezar, algunos conceptos clave para tener en mente: 

¿Qué es R? R es un entorno y lenguaje de programación con un enfoque al análisis estadístico

RStudio es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R, dedicado a la computación estadística y gráficos

La librería ggplot2 de R es un sistema organizado de visualización de datos. Forma parte del conjunto de librerías llamado tidyverse. Fue creada por Hadley Wickham in 2005

Los diagramas de dispersión usan una colección de puntos colocados usando coordenadas cartesianas para mostrar valores de dos variables. Al mostrar una variable en cada eje, se puede detectar si existe una relación o correlación entre las dos variables.

¿Qué librerías necesitas cargar en R Studio antes de empezar?
				
					library(ggplot2) #Para hacer las gráficas
library(viridis)  #Para seleccionar paletas de color
library(ggthemes) #Para elegir temas o plantillas de diseño para tu gráfico
library(hrbrthemes) #Para elegir más temas o plantillas de diseño para tu gráfico

				
			

Descarga la hoja aquí

Para facilitar este ejercicio he inventado una bd que puedes descargar desde el botón
Paso #1. Crear un gráfico sencillo
				
					ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_point()

				
			
Resultado:
Paso #2. Cambiemos el tamaño de los círculos y su color, según zona
				
					ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_point(size=7) +
  scale_color_viridis(discrete = T, option = "H")

				
			
Resultado:
Paso #3. Mejoremos la visualización de los puntos, añadiendo opacidad al color para percibir mejor su ubicación
				
					ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_point(size=7, alpha=0.6) +
  scale_color_viridis(discrete = T, option = "H")
				
			
Resultado:
Paso #4. Añadamos el tema The Economist para mejorar el diseño de presentación del gráfico; también agreguemos títulos y nombres a los ejes
				
					ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_point(size=7, alpha=0.6) +
  scale_color_viridis(discrete = T, option = "H")+
  theme_economist_white() +
  xlab("IDH")+
  ylab("IBM")+
  labs(title = "Ejemplo con gráfico de dispersión",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")
				
			
Resultado:
Paso #4. Ahora trabajaremos con el tamaño de la letra de las leyendas y el título
				
					
ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_point(size=7, alpha=0.6) +
  scale_color_viridis(discrete = T, option = "H")+
  theme_economist_white() +
  
  theme(legend.text = element_text(size = 10))  +
  theme(plot.title = element_text(size = 20))+
  
  xlab("IDH")+
  ylab("IBM")+
  labs(title = "Ejemplo con gráfico de dispersión",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")
				
			
Resultado:
Paso #5. ¿Cómo cambiar manualmente los colores que representan la zona en el gráfico y ajustarlos a la paleta de The Economist? ¿Cómo añadir un texto explicativo dentro del área del gráfico y una línea de tendencia?
				
					ggplot(scatter, aes(x=IBM, y=IDH, color=zona)) + 
  geom_jitter(size=7, alpha=0.6) +
  
  geom_smooth(method=lm, se=FALSE, col='black', size=0.3)+
  
  scale_color_manual(values = c("#076FA1", "#00AAC3"))+
  geom_label(
    label="Texto para explicar alguna conclusión \n relevante del gráfico", 
    x=25,
    y=25,
    label.padding = unit(0.2, "lines"),
    label.size = 0.32,
    color = "black",
    fill="#E3E3E3"
  )+
  
  theme_economist_white() +
  theme(legend.text = element_text(size = 10))  +
  xlab("IDH")+
  ylab("IBM")+
  labs(title = "Ejemplo con gráfico de dispersión",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")
				
			
Resultado:

Espero que este ejercicio te haya sido útil para mejorar el diseño de tus gráficos de barras y su comunicación. Si deseas leer más sobre temas de visualización y análisis de datos, te recomiendo estos artículos: 

error: No se puede descargar