4 de marzo de 2020
Datos abiertos
ggplot2
Construcción de gráficos
Encuentra en este link: https://rpubs.com/RLadiesMedellin/581297 los slides del taller o escánea el siguiente código QR.
Encuentra en este link: https://github.com/RLadiesMedellin/Meetup2-Tallerggplot2 los documentos necesarios para el desarrollo del taller o escánea el siguiente código QR.
Objetivo: Conocer y medir la realidad actual y futura de la juventud de la ciudad.
NOTA: para descargar un paquete puedes utilizar la función
install.packages("nombre del paquete")y para usarlo o importarlo debes usarlibrary(nombre del paquete).
library(readr)
Datos = read.csv2("https://raw.githubusercontent.com/RLadiesMedellin/Meetup2-Tallerggplot2/master/Data/EncuestaJuventud.csv",
header = TRUE, sep = ";", dec = ",")
head(Datos[,1:8], n = 5)
## Edad RangoEdad Sexo EstadoCivil TipoLocalidad Comuna Zona ## 1 18 18-21 Hombre Soltero(a) COMUNA Popular NORORIENTAL ## 2 24 22-26 Hombre Soltero(a) COMUNA Popular NORORIENTAL ## 3 18 18-21 Mujer Soltero(a) COMUNA Popular NORORIENTAL ## 4 22 22-26 Mujer Soltero(a) COMUNA Popular NORORIENTAL ## 5 19 18-21 Hombre Soltero(a) COMUNA Popular NORORIENTAL ## Estrato ## 1 Estrato 2 ## 2 Estrato 2 ## 3 Estrato 2 ## 4 Estrato 2 ## 5 Estrato 2
Los gráficos están formados por distintas capas de elementos gramaticales.
Las capas se vinculan entre sí a través de un mapeo estético (aesthetic mapping).
La primera y segunda capa son esenciales a la hora de construir cualquier gráfico con ggplot2.
library(ggplot2) ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) #Capa base
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) + geom_point() #Capa de puntos
ggplot(data = Datos) + geom_point(aes(x = Edad, y = GastoSemanalRumba)) #Capa de puntos
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) + geom_point() + facet_wrap(~ Sexo)
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) + geom_point() + facet_wrap(~ Sexo) + stat_smooth(method = "lm", se = F, col = "red")
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) +
geom_point() + facet_wrap(~ Sexo) + stat_smooth(method = "lm", se = F, col = "red") +
scale_y_continuous("Gasto semanal en Rumba", breaks = seq(0,125000,10000))
Finalmente, también podemos modificar el “tema” del gráfico:
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba)) + geom_point() +
facet_wrap(~ Sexo) + stat_smooth(method = "lm", se = F, col = "red") +
scale_y_continuous("Gasto semanal en Rumba", breaks = seq(0,125000,10000)) +
theme_bw()
Podemos personalizar más nuestro gráfico añadiendo más variables en los argumentos estéticos de color o tamaño.
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba, color = Sexo)) + geom_point()
library(plotly) Plot = ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba, color = Sexo)) + geom_point() ggplotly(Plot)
ggplot(data = Datos) +
geom_point(aes(x = Edad, y = GastoSemanalRumba, size = GastoSemanalTransporte),
alpha = 0.5)
Trata de escribir un código para obtener un gráfico como el siguiente:
ggplot(data = Datos, aes(x = Edad, y = GastoSemanalRumba, colour = Sexo)) + geom_point(size = 2) + theme_dark() + scale_x_continuous(breaks = seq(14,26,2)) + labs(y = "Gasto semanal en Rumba") + facet_wrap(~ Estrato)
Podemos utilizar otras opciones geométricas (geoms):
ggplot(data = Datos, aes(x = Sexo, y = GastoSemanalRumba)) + geom_boxplot()
ggplot(data = Datos, aes(x = Sexo, y = GastoSemanalRumba, fill = Sexo)) +
geom_boxplot() +
theme_bw() + #Tema de fondo del gráfico
theme(legend.position="top", plot.title = element_text(face = "bold",
size =12,
hjust = 0.5),
plot.subtitle = element_text(size = 10, hjust = 0.5)) +
labs(y = "Gastos semanales en pesos",
title = "Gastos semanales en rumba vs sexo", subtitle = "Taller ggplot2",
caption = "Encuesta Juventud | MEDATA")
ggplot(data = Datos, aes(x = Sexo, y = GastoSemanalRumba, fill = Sexo)) +
geom_boxplot()+
theme_bw() + theme(legend.position="top", plot.title = element_text(face = "bold",
size = 12,hjust = 0.5),
plot.subtitle = element_text(size = 10, hjust = 0.5),
axis.text.x = element_text(size = 12, angle = 45,
colour = "blue", vjust = 0.5)) +
labs(y = "Gastos semanales en pesos", title = "Gastos semanales en rumba vs sexo",
subtitle = "Taller ggplot2", caption = "Encuesta Juventud | MEDATA")
library(scales) library(dplyr) Datos %>% group_by(ValoracionOportunidadesDeLaCiudadParaEstudiar) %>% summarise(Frecuencia = n()) %>% ggplot(aes(x= ValoracionOportunidadesDeLaCiudadParaEstudiar, y= Frecuencia)) + geom_bar(stat = "identity", width = 0.5, fill = "#702899") + theme_bw() + labs(x = "Oportunidades para estudiar")
coord_flip:Datos %>% group_by(ValoracionOportunidadesDeLaCiudadParaEstudiar) %>% summarise(Frecuencia = n()) %>% ggplot(aes(x= ValoracionOportunidadesDeLaCiudadParaEstudiar, y= Frecuencia)) + geom_bar(stat = "identity", width = 0.5, fill = "#702899") + theme_bw() + labs(x = "Oportunidades para estudiar") + coord_flip()
Datos %>%
group_by(ValoracionOportunidadesDeLaCiudadParaEstudiar) %>%
summarise(Frecuencia = n()) %>%
ggplot(aes(x= ValoracionOportunidadesDeLaCiudadParaEstudiar, y= Frecuencia)) +
geom_bar(stat = "identity", width = 0.5, fill = "#702899") +
theme_bw() +
labs(x = "Oportunidades para estudiar")+
geom_text(size = 3.5,aes(label = Frecuencia), vjust = -0.5)+
scale_y_continuous(breaks = seq(0,4000,500)) +
scale_x_discrete(limits = c("Muy desfavorable", "Desfavorable",
"Ni favorable/ Ni desfavorable",
"Favorable", "Muy favorable"))
Esto podemos hacerlo utilizando la función facet_wrap.
Datos %>% group_by(ValoracionOportunidadesDeLaCiudadParaEstudiar, Sexo) %>%
summarise(Frecuencia = n()) %>%
ggplot(aes(x= ValoracionOportunidadesDeLaCiudadParaEstudiar, y= Frecuencia)) +
geom_bar(stat = "identity", width = 0.5, fill = "#702899") +
theme_bw() +
labs(x = "Oportunidades para estudiar")+
geom_text(size = 3.5,aes(label = Frecuencia), vjust = -0.5)+
scale_y_continuous(breaks = seq(0,4000,500)) +
scale_x_discrete(limits = c("Muy desfavorable", "Desfavorable",
"Ni favorable/ Ni desfavorable",
"Favorable", "Muy favorable")) +
facet_wrap(~ Sexo) #También podemos jugar con el argumento scales
Datos %>% group_by(ValoracionOportunidadesDeLaCiudadParaEstudiar, Sexo) %>%
summarise(Frecuencia = n()) %>%
ggplot(aes(x= ValoracionOportunidadesDeLaCiudadParaEstudiar, y= Frecuencia)) +
geom_bar(stat = "identity", width = 0.5, fill = "#702899") +
theme_bw() +
labs(x = "Oportunidades para estudiar")+
geom_text(size = 3.5,aes(label = Frecuencia), vjust = -0.5)+
scale_y_continuous(breaks = seq(0,4000,500)) +
scale_x_discrete(limits = c("Muy desfavorable", "Desfavorable",
"Ni favorable/ Ni desfavorable",
"Favorable", "Muy favorable"),
labels = c("Muy \ndesfavorable", "Desfavorable",
"Ni favorable \nNi desfavorable",
"Favorable", "Muy \nfavorable")) +
facet_wrap(~ Sexo)
Realiza un diagrama de barras que relacione la variable “Estudia” con la variable “Trabaja”.
Datos %>% group_by(Estudia, Trabaja) %>% summarise(Frecuencia = n()) %>% ggplot(aes(x= Estudia, y= Frecuencia, fill = Trabaja)) + geom_bar(stat = "identity", width = 0.5, position = "dodge") + theme_bw()
ggplot(Datos, aes(x=Edad))+ geom_histogram(breaks = seq(14,26,1), fill="#702899", color="black", bins = 10) + theme_bw() + labs(y = "Frecuencia") + scale_x_continuous(breaks = seq(14,26,2))
ggplot(Datos, aes(x=Edad))+
geom_histogram(breaks = seq(14,26,1), fill="#702899", color="black", bins = 10) +
theme_bw() + labs(y = "Frecuencia") + scale_x_continuous(breaks = seq(14,26,2)) +
geom_vline(xintercept = 18,linetype="dashed", size=1.5, colour="#b82b14") +
annotate("text", label = "Mayores de edad", x = 22, y = 1600, size = 6,
colour = "#b82b14")
ggplot(Datos, aes(x=Edad))+
geom_histogram(breaks = seq(14,26,1), aes(y =..density..),
fill="#702899", color="black", bins = 10) +
geom_density(fill="gray", alpha = 0.5, lwd = 0.7) +
theme_bw() + labs(y = "Densidad") +
scale_x_continuous(breaks = seq(14,26,2))
library(RColorBrewer) #Paleta de colores ggplot(Datos, aes(x=Edad, colour = Sexo, fill = Sexo))+ geom_histogram(breaks = seq(14,26,1), bins = 10, position = "dodge", alpha = 0.7)+ theme_bw() + labs(y = "Frecuencia") + scale_x_continuous(breaks = seq(14,26,2)) + scale_color_brewer(palette="Dark2") + scale_fill_brewer(palette="Dark2")
geom_line()geom_smooth()geom_hline()geom_area()geom_jitter()geom_rug()geom_violin() …Puedes encontrar mayor información en: https://ggplot2.tidyverse.org/reference/
¡Muchas gracias!