+ - 0:00:00
Notes for current slide
Notes for next slide

R aplicado a la ECH

Setiembre 2020
Gabriela Mathieu

Creative Commons License
Creative Commons Attribution 4.0 International License

¿Qué haremos hoy?

  • Repaso del taller anterior

  • Introducción al paquete ggplot2

  • Introducción al paquete sf y geouy

ggplot2

Gramática de gráficos

  • ggplot2 permite hacer los gráficos por capas, hay diferentes capas pero 3 fundamentales para hacer el gráficos, es decir, elementos que se van agregando.

    • data: el data frame que contiene las variables que vamos a graficar

    • aesthetics mapping: las variables que vamos a graficar y donde (x, y)

    • geometrics: el tipo de gráfico que haremos (puntos, líneas, barras, etc.)

    • capas adicionales para mejorar el gráfico (título, etiqueta, nombres de ejes, etc.)

Capas

Elemento Descripción Función
Data Set de datos a plotear ggplot()
Aesthetics Escalas en la que mapearemos los datos aes()
Geometries Los elementos visuales utilizados para nuestros datos geom_*()
Facets Para ploteos múltiples facet_*()
Statistics Construye nuevas variables (count, density, etc.) stat_*()
Scales Que elementos serán mapeados para las variables definidas scale_*()
Coordinate Cartesianas o polares coord_*()
Themes Estilos gráficos theme_*()

R graph gallery

Capas

  • Las 3 primeras capas deben ser en este orden: data, aesthetics, geometry

Capas

  • Las 3 primeras capas deben ser en este orden: data, aesthetics, geometry
  • Las capas se van superponiendo con un +

Capas

  • Las 3 primeras capas deben ser en este orden: data, aesthetics, geometry
  • Las capas se van superponiendo con un +
  • La estructura básica es como esta:

ggplot(data = <df>) +

aes(x = <Variable_1>, y = <Variable_2>) +

geom_bar()

Ejemplo

library(ech)
library(dplyr)
load("data/ech19.RData")
ech19 <- level_education(data = ech19)
nivel <- get_estimation_mean(data = ech19, variable = "level_education", level = "i")
nivel
# A tibble: 5 x 4
level_education estimacion estimacion_low estimacion_upp
<fct> <dbl> <dbl> <dbl>
1 Sin instruccion 0.0947 0.0927 0.0966
2 Primaria 0.294 0.291 0.297
3 Secundaria o UTU 0.458 0.454 0.461
4 Magisterio o profesorado 0.0244 0.0234 0.0253
5 Universidad o similar 0.129 0.127 0.132

ggplot2::ggplot()

Ejemplo mínimo: data + aes

# Cargo el paquete
library(ggplot2)
ggplot(data = nivel, aes(x = level_education,
y = estimacion*100))

  • En aes se definen los parámetros estéticos de las variables.

  • Aquellos que son fijos como color = "red", fill = "blue", etc. se escriben afuera de aes().

ggplot2::geom_bar()

Ejemplo mínimo: data + aes + geom

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100)) +
geom_bar(stat = "identity")

El argumento de geom_bar(), stat='identity', indica que la altura de la barra debe ser igual al valor y.

ggplot2::coord_flip()

Ejemplo mínimo: girar ejes

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100)) +
geom_bar(stat = "identity") +
coord_flip()

Etiqueta y relleno

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip()

ggplot2::geom_text()

Texto

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip() +
geom_text(size = 3,
position = position_stack(vjust = 0.5))

ggplot2::labs()

Agrego nombre a ejes y título

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip() +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
labs(x = "Nive máximo alcanzado",
y = "Estimación",
title ="Estimación de máximo nivel alcanzado",
subtitle = "Fuente: ECH 2019")

ggplot::theme()

Elementos del tema

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip() +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
labs(x = "Nive máximo alcanzado",
y = "Estimación",
title ="Estimación de máximo nivel alcanzado",
subtitle = "Fuente: ECH 2019") +
theme(legend.position = "bottom")

ggplot::theme_*()

Temas

  • La función theme() controla el estilo del gráfico, permite definir el color de fondo, la apariencia de la leyenda, tamaños de letra, etc.

  • En la función theme_*() ya vienen predefinidos una variedad de temas.

  • Se pueden instalar un paquete específico que trae más temas: ggthemes.

  • Explorar otros temas.

Tema predefinido

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip() +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
labs(x = "Nive máximo alcanzado",
y = "Estimación",
title ="Estimación de máximo nivel alcanzado",
subtitle = "Fuente: ECH 2019") +
theme(legend.position = "bottom") +
theme_minimal()

ggplot::scale_fill_manual()

Escala de colores

ggplot(data = nivel,
aes(x = level_education,
y = estimacion*100,
fill = level_education,
label = paste0(round(estimacion*100,0), "%"))) +
geom_bar(stat="identity") +
coord_flip() +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
labs(x = "Nive máximo alcanzado",
y = "Estimación",
title ="Estimación de máximo nivel alcanzado",
subtitle = "Fuente: ECH 2019") +
theme(legend.position = "bottom") +
theme_minimal() +
scale_fill_manual(values = c("red", "blue", "green", "yellow", "gray"))

Exportar un gráfico

Es preferible el formato pdf ya que se guarda en formato vectorial y así evitamos que se pixele como puede ocurrir con los formatos png, jpg, etc.

ggsave('<nombre>.pdf')

Podemos definir otros argumentos para variar el tamaño del gráfico, entre otras cosas. Para guardarlo en png cambiamos pdf por png.

Ejercicio

  • Estimar el máximo nivel educativo alcanzado según sexo

  • Usando la sintaxis del gráfico anterior hacer un diagrama de barras con la nueva estimación.

  • Guardarlo en formato png

¿Qué haremos hoy?

  • Repaso del taller anterior

  • Introducción al paquete ggplot2

  • Introducción al paquete sf y geouy

Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow