Siete pasos para mejorar tus gráficos de barras con ggplot2 en R

Picture of Hassel Fallas

Hassel Fallas

Analista de datos y periodista

La visualización de datos es una forma de entender y explicar el mundo que me rodea. Suena ambicioso, pero cada vez que me enfrento a un proyecto de esta naturaleza surgen tantas preguntas que es imposible no maravillarme por todo lo que puedo descubrir buscando el contexto para comprender el sentido de los datos. En ese camino, el análisis visual de la información y su posterior representación gráfica son fundamentales. Para emprender ambas tareas existen múltiples herramientas, tal y como te cuento en este otro post: Once herramientas gratuitas y en línea para visualizar datos.

Una de mis herramientas predilectas es R y sus librerías para visualizar datos. Justamente en este artículo te guiaré en el uso de una de las librerías más famosas: la versátil ggplo2.  Te mostraré siete pasos para mejorar tus gráficos de barras con ggplot2. Antes de empezar, te dejo algunos conceptos base relevantes.

¿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

¿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(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")
				
			
Resultado:
Paso #2. Mejoremos el gráfico con algo de color
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
geom_bar(position="stack", stat="identity")+
scale_fill_viridis(discrete = T, option = "H")

#Nota: Las escalas de Viridis van de la opción A a la H. 
#Puedes probar con alguna de esas letras cambiando la H que aparece en esta porción del
#código arriba
scale_fill_viridis(discrete = T, option = "H")

				
			
Resultado:
Paso #3. Además de color, démosle estilo al gráfico con un tema
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  scale_fill_viridis(discrete = T, option = "D")+ #nota que aquí cambié la opción de color :)
  theme_ipsum_es() 
				
			
Resultado:
Paso #4. Ahora añadamos títulos y leyendas al gráfico
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  scale_fill_viridis(discrete = T, option = "D")+
  theme_ipsum_es()  +
  xlab("Película favorita")+
  ylab("cantidad de personas")+
 labs(title = "Películas predilectas, según identidad de género ",
         subtitle = "Acá se escribe una conclusión que amplíe el título",
         caption = "Fuente:BD inventada para este post")+
guides(fill=guide_legend(title="Identidad de género"))
				
			
Resultado:
Paso #4. Vamos a crear gráficos por categorías, según identidad de género
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  scale_fill_viridis(discrete = T, option = "D")+
  
  facet_wrap(~Identidad_género) +
  
  theme_ipsum_es()  +
  xlab("Película favorita")+
  ylab("cantidad de personas")+
  labs(title = "Películas predilectas, según identidad de género ",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")+
  guides(fill=guide_legend(title="Identidad de género"))
				
			
Resultado:
Paso #5. Mejoremos la visualización de las etiquetas del eje X
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  scale_fill_viridis(discrete = T, option = "D")+
  
  facet_wrap(~Identidad_género) +
  
  theme_ipsum_es()  +
  xlab("Película favorita")+
  ylab("cantidad de personas")+
  labs(title = "Películas predilectas, según identidad de género ",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")+
  
theme(legend.position="none")+
  theme(axis.text.x = element_text(color = "grey20", size = 10,
                                   angle = 45, hjust = .5, vjust = .5, face = "plain"))
				
			
Resultado:
Paso #6. ¿Qué tal si creamos nuestra propia escala de color para cada categoría?
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  
  scale_fill_manual(values = c("#003f5c", "#ff7c43", "#665191"))+
  
  facet_wrap(~Identidad_género) +
  
  theme_ipsum_es()  +
  xlab("Película favorita")+
  ylab("cantidad de personas")+
  labs(title = "Películas predilectas, según identidad de género ",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")+
  
  theme(legend.position="none")+
  theme(axis.text.x = element_text(color = "grey20", size = 10,
                                   angle = 45, hjust = .5, vjust = .5, face = "plain"))
				
			
Resultado:
Paso #7. Y si queremos nuestro gráfico en horizontal, ¿cómo lo hacemos?
				
					ggplot(bd_fake, aes(fill=Identidad_género, y=Cuenta, x=Película_favorita)) + 
  geom_bar(position="stack", stat="identity")+
  scale_fill_manual(values = c("#003f5c", "#ff7c43", "#665191"))+
  
  facet_wrap(~Identidad_género) +
  
  theme_ipsum_es()  +
  xlab("Película favorita")+
  ylab("cantidad de personas")+
  labs(title = "Películas predilectas, según identidad de género ",
       subtitle = "Acá se escribe una conclusión que amplíe el título",
       caption = "Fuente:BD inventada para este post")+
  
 coord_flip() + 
  
  theme(legend.position="none")+
  theme(axis.text.x = element_text(color = "grey20", size = 10,
                                   angle = 45, hjust = .5, vjust = .5, face = "plain"))
				
			
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