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")