Programación para las Ciencias Sociales (ICP0506)




AndrƩs Cruz



2020-09-07 L



Visualización de datos (clase asincrónica)

Plan de la clase

  • ĀæPor quĆ© visualizar datos?
  • Preceptos de visualización de datos
  • GrĆ”ficos en R con la gramĆ”tica de grĆ”ficos (ggplot2)
  • Tipos de grĆ”fico

¿Por qué visualizar datos? (I)

¿Por qué visualizar datos? (II)

Cuarteto de Anscombe. Fuente: [Healy (2018)](http://socviz.co/), adaptado de Anscombe (1973).

Cuarteto de Anscombe. Fuente: Healy (2018), adaptado de Anscombe (1973).

¿Por qué visualizar datos? (III)

Fuente: Jackman (1980) en [Healy (2018)](http://socviz.co/).

Fuente: Jackman (1980) en Healy (2018).

Principios de visualización de datos

Fuentes: Healy (2018); PolicyViz (2018a, 2018b).

Forma y función de la visualización

Fuente: Adaptado de [PolicyViz (2018b)](https://policyviz.com/wp-content/uploads/2018/08/PolicyViz-DataViz-Cheatsheet_Page_2.png)

Fuente: Adaptado de PolicyViz (2018b)

[I, graf. 1]: Explicativo y estƔtico - Alcatruz & Sanhueza-Riffo (2019)

[II]: Exploratorio y estƔtico - Fynn & Nocetto (2019)

[III]: Exploratorio e interactivo - Gendron (s.f.)

[IV]: Explicativo e interactivo - The Pudding (2017)

Preceptos de visualización de datos

Audiencia

Fuente: Holmes en [Healy (2018, cap. 1)](http://socviz.co/lookatdata.html#lookatdata).

Fuente: Holmes en Healy (2018, cap. 1).

Como en todo ejercicio de comunicación, es crucial entender quién es nuestro receptor. ¿Academia? ¿Público general? ¿Técnicos(as)?

Reducir la complejidad

Usualmente queremos maximizar el ratio de información/tinta (Healy, 2018, cap. 1), lo que implica evitar 3D/Colores/formas que no registren información o sean redundante.

Percepciones y dimensiones (I)

Percepciones y dimensiones (II)

TamaƱo de los elementos

Escalas

Etiquetas (I)

Queremos que las etiquetas de texto en nuestros grƔficos sean autoexplicativas y ayuden a la lectura. Es importante colocar la fuente.

Etiquetas (II)

Los elementos de texto de un grÔfico también guían al receptor a propósito de qué elementos concentrar su atención.

Colores

  • Las paletas de colores son importantes para transmitir correctamente información.

  • En general, hay paletas secuenciales, divergentes y cualitativas. Veamos Color Brewer 2.0. Siempre queremos utilizar la correcta para nuestra visualización.

  • Hay paletas mĆ”s amigables con daltónicos(as) que otras. Para paletas cualitativas, una buena fuente es Color Brewer.

  • En tĆ©rminos de paletas de colores secuenciales, viridis parece ser la mĆ”s óptima.

Gusto y sentido comĆŗn

Promedio de esperanza de vida por continente, 2007. Fuente: [Healy (2018)](http://socviz.co/lookatdata.html#what-makes-bad-figures-bad)

Promedio de esperanza de vida por continente, 2007. Fuente: Healy (2018)

Elegir el grƔfico correcto

Veamos From Data to Viz

GrƔficos en R con la gramƔtica de grƔficos

Componentes de un grĆ”fico en la ā€œgramĆ”tica de grĆ”ficosā€ (gg)

      1. Base de datos. (2) Sistema de coordenadas. (3) Objetos geomƩtricos o geoms.
  • Los geoms se posicionan en el sistema de coordenadas de acuerdo a cómo mapeamos distintas propiedades estĆ©ticas a las variables de la base de datos (x, y, color, fill, etc.).
Fuente: [RStudio (2016)](https://docs.google.com/viewer?url=https://github.com/rstudio/cheatsheets/raw/master/translations/spanish/ggplot2.pdf)

Fuente: RStudio (2016)

Tipos de grƔficos y su comando en ggplot2

  • Univariados
    • Categórica.
      • Barras – geom_bar()
    • NumĆ©rica.
      • Histograma – geom_histogram()
  • Bivariados
    • Distribución numĆ©rica + categórica.
      • Boxplots por categorĆ­a – geom_boxplot()
    • Conteo numĆ©rica + categórica.
      • Columnas – geom_col()
    • NumĆ©rica + numĆ©rica.
      • Puntos / dispersión – geom_point()

Datos

df_municipios
## # A tibble: 324 x 17
##    comuna comuna_id region n_encuestados poblacion porc_rural edad_prom
##    <chr>      <dbl>  <dbl>         <int>     <dbl>      <dbl>     <dbl>
##  1 Iquiq…      1101      1          6447    180856       2.06      34.6
##  2 Alto …      1107      1          3015    126971       0         28.8
##  3 Pozo …      1401      1           255     17259      27.6       34.4
##  4 CamiƱa      1402      1            82       832     100         36.6
##  5 Huara       1404      1           171      3488     100         39.2
##  6 Pica        1405      1           180     16357      19.8       44.7
##  7 Antof…      2101      2          5473    387454       0         34.2
##  8 Mejil…      2102      2           169     11777       0         32.5
##  9 Sierr…      2103      2            90      2103     100         32.2
## 10 Taltal      2104      2           224      8789       7.79      35.4
## # … with 314 more rows, and 10 more variables: porc_mujeres <dbl>,
## #   porc_profesionales <dbl>, porc_pobres_ing <dbl>, porc_pobres_md4 <dbl>,
## #   porc_uso_diario_inet <dbl>, porc_particip_iglesia <dbl>,
## #   porc_mapuche <dbl>, alcalde_nombre <chr>, alcalde_coalicion <chr>,
## #   alcalde_reelecto <dbl>

Barras

ggplot(data    = df_municipios,                # datos
       mapping = aes(x = alcalde_coalicion)) + # mapeos estƩticos
  geom_bar()                                   # geoms

Histograma

ggplot(data    = df_municipios,
       mapping = aes(x = porc_rural)) +
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Boxplots por categorĆ­a

ggplot(data    = df_municipios,
       mapping = aes(x = alcalde_coalicion, y = porc_pobres_md4)) +
  geom_boxplot()

Columnas (I)

resumen_reel_por_coal <- df_municipios %>% 
  group_by(alcalde_coalicion) %>%
  summarize(porc_alcaldes_reelectos = mean(alcalde_reelecto))

ggplot(data    = resumen_reel_por_coal,
       mapping = aes(x = alcalde_coalicion, y = porc_alcaldes_reelectos)) +
  geom_col()

Columnas (II)

ggplot(data    = resumen_reel_por_coal,
       mapping = aes(x = porc_alcaldes_reelectos, 
                     y = fct_reorder(alcalde_coalicion, porc_alcaldes_reelectos))) +
  geom_col()

Puntos

ggplot(data    = df_municipios,
       mapping = aes(x = porc_mapuche, y = porc_pobres_md4,
                     color = alcalde_coalicion, shape = alcalde_coalicion)) +
  geom_point()

Etiquetas

... +
  labs(title = "Relación entre porcentaje de población mapuche y porcentaje de pobreza",
       subtitle = "por comunas, aƱo 2017", caption = "Fuente: Casen (2017).",
       # ahora para los mapeos estƩticos:
       x = "% de población mapuche", y = "% de población pobreza (multidimensional)",
       color = "Coalición del(la) edil", shape = "Coalición del(la) edil")