25 de septiembre de 2018

Objetivos

  • Presentar a la gramática de los gráficos como paradigma.
  • Conocer los elementos de un gráfico de acuerdo con la GG.
  • Aplicar la gramática de los gráficos con ggplot().
  • Generar gráficos exploratorios de nuestros datos.

Motores de gráficos en R

  • R dispone de varios motores para generar gráficos.
    • A efectos prácticos en todos se pueden los mismos gráficos con mayor o menor dificultad.
    • Sin embargo hay diferencias importantes en la filosofía subyacente.
    • Esto se refleja en la sintaxis con la que generamos cada gráfico.
  • base:: La instalación básica de R tiene un motor de gráficos al que invocamos con la función plot().
  • laticce() pionera en el uso de paneles para graficar múltiples series de datos.
  • ggplot() de Hadley Wickham, implementación de la gramática de los gráficos.

Comparativa de motores

Motor Filosofía Ventajas Desventajas
base() Papel y lápiz Autoplot Métodos s3 para objetos comunes Personalización, paneles, consistencia de estilo.
lattice() Modelado, análisis multivariado Velocidad, paneles, estilo elegante Legibilidad de sintaxis, extensiones.
ggplot() Gramática de los gráficos Sintaxis clara, estilos, paneles, paletas Lento de procesar y especificar, texturas.
plotly() Gráficos interactivos Directo a la web JavaScript \(\neq\) R

La gramática de los gráficos

Filosofía

Wilkinson (2005) The grammar of graphics.
Wickham (2010) A layered grammar of graphics.

  • Leland Wilkinson aspira a ir más allá del tipo de gráfico y se centra en los elementos que lo constituyen.
  • El encadenamiento de elementos produce gráficos, como el encadenamiento de palabras produce oraciones.
    • Wickham llega a llamar a los gráficos poemas.
  • Este paradigma nos obliga a pensar primero que es lo que queremos y después graficar.
    • Nos apartamos de las soluciones estandarizadas, graficar es un ejercicio de creatividad regulado por una gramática.

Paradigma de programación

  • Es declarativo, no imperativo.
  • Le decimos qué es lo que queremos obtener, no cómo hacerlo.

Elementos de la gramática de los gráficos

  • Datos y mapeados de datos
    • Incluye los ejes y los agrupamientos.
  • Elementos geométricos
    • Puntos, barras, rectas, etc.
  • Escalas
    • Natural (rango de los datos), personalizada.
  • Paneles
    • Múltiples gráficos en la misma escala, uno por cada grupo.
  • Transformaciones
    • Conteos, medias, cuartiles, etc.
  • Sistema de coordenadas
    • Cartesiano, polar, ternario.

Ejemplo de la gramática de los gráficos con un gráfico de barras

  • Datos: x, una variable discreta.
  • Transformación: conteos por categoría.
  • Elemetos geométricos: columnas.
  • Coordenadas: cartesianas.1
  • Escala: x continua de cero al máximo de frecuencia observada, y discreta con un punto por categoría.
  • Paneles: ningunos en este caso.

¿Por qué usamos ggplot?

  • Gramática de los gráficos para R.
  • Amplia variedad de gráficos dentro del mismo paradigma.
    • Gráficos multipanel con una sintaxis simple vs. lattice::
  • Salidas estándar de gran calidad.
    • Ajuste automático de margenes del gráfico.
    • Adivina correctamente etiquetas, leyendas, escalas, etc.
  • Gráficos elegantes sin mucho esfuerzo.
    • Temas visuales mantienen el estilo en gran variedad de gráficos.
  • Personalización muy detallada de los gráficos.
    • Literalmente podemos ajustar todos los criterios…
    • Un a la vez.
  • Extensible.
    • A partir de ggplot2 2.0 los usuarios pueden crear temas, elementos geométricos, sistemas de coordenadas, etc.
    • coord_tern() grafica tres variables en un espacio bidimensional.
    • geom_label_repel() evita la superposición de etiquetas.

Contrucción de un gráfico de barras en ggplot

Transformación

Municipios por Entidad Federativa en 2015
ENT n
Distrito Federal 16
México 125

Mapeo aes

Elementos geométricos geom_col

Escalas

Todo junto.

Mismos datos, escala, coordenadas. \(\neq\) elemento geométrico.

Mismos, datos, coordenadas, elemento geo, \(\neq\) escala.

Mismos datos, escala, geometría. Dif sistema de coordenadas.

Mismos datos, escala, coordenadas, objeto geométrico. Diferente agrupamiento (todos en una columna)

Mismos datos, escala, coordenadas, elemento geométrico. Diferente agrupamiento y coordenadas polares.

Paneles.

Elementos geométricos en ggplot.

Elemento Gráfico Argumentos stat
geom_col Columnas x factor, y conteo
geom_bar Columnas x continua bin
geom_point Dispersión x, y continuas
geom_point Puntos x factor, y conteo
geom_histogram Histograma x continua bin
geom_boxplot Gráfico caja x factor, y continua boxplot
geom_density Curva densidad x continua bin, density
geom_errorbar Barra de error x factor, y continua Usuario

Cont

Elemento Gráfico Argumentos stat
geom_smooth Recta (modelo) x continua, y contin lm, gl
geom_label Etiquetas x continua, y contin
geom_label_repel Puntos x continua, y contin
geom_jitter Puntos random x factor, y contínua

Sintaxis de ggplot()

  • ggplot() tiene una sintaxis escalonada, similar en concepto de dplyr::
  • Usamos el signo + para encadenar capas.
  • La sintaxis básica es:
    • ggplot(datos, aes(x=variable_eje_x, y=variable_eje_y)) + geom_??
  • también se pueden especificar el mapeo (aes) directamente en el elemento geométrico.
    • ggplot() + geom_??(aes(x=variable_eje_x, y=variable_eje_y))

Control estético de los gráficos.

  • Controlamos el aspecto visual general del gráfico con el elemento theme()
    • ggplot() trae varios temas visuales.
      • theme_minimal(), theme_classic(), theme_void()
    • ggextra() otros más.
      • theme_tufte()
    • Las tipografías de geom_label() y geom_text()` se controlan internamente.
  • Controlamos los detalles visuales del gráfico con theme(element.)
    • El ajuste final de un gráfico con ggplot() puede ser complicado, pero siempre podemos crear un tema a partir de nuetras opciones y aplicarlo a todos los casos similares.