Instalar y cargar paquetes que usaremos en el laboratorio
install.packages("ggplot2",dependencies = T)
install.packages("data.table")
install.packages("utf8")
utf8 sirve para que R entienda el lengiaje con ñ, ttíldes, etc eval=False sirve para que el chunk no corra al momento de crear el archivo html
library(ggplot2)
library(data.table)
library(utf8)
Abrir base de datos
EOD<-fread(file = "EOD_Trabajada.csv",encoding = "UTF-8")
encoding= “UTF-8”, así r utilizará el paquete para la lectura del leguaje en español
Considerar que las personas se encuentran repetidas en la base. Por lo tanto, si queremos realizar análisis de gráficos con las personas, debemos eliminar los duplicados.
EOD[,dup:=paste0(Hogar,Persona)]
personas<-EOD[!duplicated(dup)]
:= generar variable paste0 pega sin espacio ! -> elimina los true del duplicated
Comando para ejecutar la función ggplot
ggplot()
Crear el sistema de coordenadas
ggplot(data=personas,aes(x=Edad))
Asociamos el objeto geométrico
ggplot(data=personas,aes(x=Edad))+
geom_histogram()
Utilizamos un bindwidth más pequeño
ggplot(data=personas,aes(x=Edad))+
geom_histogram(bins = 50)
bins sirve para ver cuantas observaciones hay entre cada intervalo
Recordemos que es una encuesta
ggplot(data=personas,aes(x=Edad,weights=Factor))+
geom_histogram(bins = 50)
factor: entender a cuanta gente representa el encuestado
Graficamos la relacion entre tiempo de viaje a ingreso
ggplot(data=EOD,aes(x=TiempoViaje,y=IngresoFinal))+
geom_point()
Agregamos los pesos
ggplot(data=EOD,aes(x=TiempoViaje,y=IngresoFinal,weights=Factor))+
geom_point()
Jitter agrega un poco de ruido a los puntos, para así captar aquella masa que se esconde detrás de otros puntos
ggplot(data=EOD,aes(x=TiempoViaje,y=IngresoFinal,weights=Factor))+
geom_jitter()
Podemos controlar el tamaño de los puntos y limitar el tiempo de viaje
ggplot(data=EOD[TiempoViaje<200],aes(x=TiempoViaje,y=IngresoFinal,weights=Factor))+
geom_jitter(size=1.5)
si ponmes & luego de [TiempoViaje<200], podemos limitar otras variables
Podemos diferenciar por actividad
ggplot(data=EOD[TiempoViaje<200],aes(x=TiempoViaje,y=IngresoFinal,weights=Factor,colour=Actividad.y))+
geom_jitter(size=1.5)
se pone adctividad.y al momento ponerle nombre a las actividades (no entendi tanto pero se pone asi)
Podemos ver la distribución del tiempo de viaje por actividad
ggplot(data=EOD[TiempoViaje<200],aes(x=TiempoViaje,weights=Factor))+
geom_histogram()+ facet_wrap(facets = "Actividad.y")
facet_wrap separa los graficos por actividad.y
Volviendo al scatter plot. Agregar etiquetas a los ejes, títulos y subtítulos al gráfico
ggplot(data=EOD[TiempoViaje<200],aes(x=TiempoViaje,y=IngresoFinal,weights=Factor,colour=Actividad.y))+
geom_jitter(size=1.5)+
labs(x="Tiempo de Viaje en Minutos",y="Ingreso Total en Pesos",title = "El Plot del Valla",subtitle = "El duck me ayudó",caption = "Source: Datos de Encuesta origen y destino Gran Valparaíso 2014, SECTRA - Gobierno de Chile")
Cambiar el título de la leyenda
ggplot(data=EOD[TiempoViaje<200],aes(x=TiempoViaje,y=IngresoFinal,weights=Factor,colour=Actividad.y))+
geom_jitter(size=1.5)+
labs(x="Tiempo de Viaje en Minutos",y="Ingreso Total en Pesos",title = "Mi primer plot aceptable",subtitle = "Probando subtitulos",caption = "Source: Datos de Encuesta origen y destino Gran Valparaíso 2014, SECTRA - Gobierno de Chile")+
scale_color_discrete(name="Actividad")
Algo sencillo
ggplot(data=personas,aes(x=ComunaR,weights=Factor))+
geom_bar()
El comando position cambia la posición en el gráfico de las barras por la variable dentro del fill, en este caso la actividad
ggplot(data=personas,aes(x=ComunaR,weights=Factor,fill=Actividad.y))+
geom_bar()
Fill sirve para que cada barra muestre otra variable en cada barra
ggplot(data=personas,aes(x=ComunaR,weights=Factor,fill=Actividad.y))+
geom_bar(position ="stack")
ggplot(data=personas,aes(x=ComunaR,weights=Factor,fill=Actividad.y))+
geom_bar(position="dodge")
ggplot(data=personas,aes(x=ComunaR,weights=Factor,fill=Actividad.y))+
geom_bar(position="fill")
Fill pone porcentajes entre el 0 y 1
Queremos ver en ungráfico de barras el ingreso promedio de las personas por comuna. Considerando los factores de expansión.
ingprom<-personas[,weighted.mean(x=IngresoFinal,w=Factor, na.rm = T),by=ComunaR]
weighthted.mean: permite calcular los ingresos finales (promedio) de acuerdo a los factores de expancion, luego remueve los na, y todo esto por comuna
ggplot(data=ingprom, aes(x=ComunaR, y=V1)) + geom_bar(stat = "identity")
Agregar detalles estéticos
ggplot(data=ingprom, aes(x=ComunaR, y=V1)) + geom_bar(stat = "identity") + labs(x="Comuna",y="",title = "Ingreso promedio de las personas",subtitle = "Por Comuna de Residencia",caption = "Source: Datos de Encuesta origen y destino Gran Valparaíso 2014, SECTRA - Gobierno de Chile")+ scale_y_continuous(labels=function(n){format(n, scientific = FALSE)})
Algo sencillo
ggplot(data=EOD,aes(x=ComunaR,y=TiempoViaje))+
geom_boxplot()
Recuerde que limitamos el tiempo de viajes a menos de 200 minutos
ggplot(data=EOD[TiempoViaje<200],aes(x=ComunaR,y=TiempoViaje))+
geom_boxplot()
Podemos darle colores a cada categoría y Leyenda
ggplot(data=EOD[TiempoViaje<200],aes(x=ComunaR,y=TiempoViaje,fill=ComunaR))+
geom_boxplot()
Agregar etiquetas a los ejes, títulos y subtítulos al gráfico
ggplot(data=EOD[TiempoViaje<200],aes(x=ComunaR,y=TiempoViaje,fill=ComunaR))+
geom_boxplot() + labs(x="",y="Minutos de Viaje",title = "Distribución de Tiempo de Viaje EOD",subtitle = "Por Comuna de Residencia",caption = "Source: Datos de Encuesta origen y destino Gran Valparaíso 2014, SECTRA - Gobierno de Chile")+
scale_fill_discrete(name="Comuna")
Podemos modificar cada elemento de los ejes del gráfico
ggplot(data=EOD[TiempoViaje<200],aes(x=ComunaR,y=TiempoViaje,fill=ComunaR))+
geom_boxplot() + labs(x="",y="Minutos de Viaje",title = "Distribución de Tiempo de Viaje EOD",subtitle = "Por Comuna de Residencia",caption = "Source: Datos de Encuesta origen y destino Gran Valparaíso 2014, SECTRA - Gobierno de Chile")+
scale_fill_discrete(name="Comuna") +
theme(
plot.title = element_text(size=25, face="bold"),
axis.title.y = element_text(size=15),
axis.text.y = element_text(size=10,angle = 90),
axis.title.x = element_text(size=20),
axis.text.x = element_blank(),
legend.title = element_text(size=20),
legend.text = element_text(size=16))