class: center, middle, titular background-size: contain <img style="border-radius: 50%;" src="img/logofundapi.jpg" width="250px"/> # Capítulo 4: Gramática de gráficos con `ggplot2` ## **CAPACITACIÓN** #### LINDA CABRERA ORELLANA #### Mayo, 2024 --- # Contenido del Capítulo 4 - Creación de gráficos con `ggplot2` * Gramática de los gráficos * Data * Estética * Geometrías * Facetas * Temas visuales - Análisis exploratorio de datos (EDA) --- class: middle, center, inverse
# Creación de gráficos con `ggplot2` --- background-image: url("img/grammar.png") background-size: contain --- ## Gramática de los gráficos - **Data:** datos sin procesar que desea trazar. - **Geometrías `geom_:`** formas geométricas que representarán los datos. - **Estética `aes()`:** estética de los objetos geométricos y estadísticos, como posición, color, tamaño, forma y transparencia. - **Escalas `scale_`:** asignaciones entre los datos y las dimensiones estéticas, como el rango de datos para trazar el ancho o los valores de los factores para los colores. - **Transformaciones estadísticas `stat_`:** resúmenes estadísticos de los datos, como cuantiles, curvas ajustadas y sumas. - **Sistema de coordenadas `coord_`:** transformación utilizada para mapear coordenadas de datos en el plano del rectángulo de datos. - **Facetas `facet_`:** disposición de los datos en una cuadrícula de gráficos. - **Temas visuales `theme()`:** los valores predeterminados visuales generales de una trama, como el fondo, las cuadrículas, los ejes, el tipo de letra predeterminado, los tamaños y los colores. <br> <br> <br> <br> .footnote[ [Referencias de ggplot2](https://ggplot2.tidyverse.org/reference/) | [ggplot2.tidyverse.org](https://ggplot2.tidyverse.org/) ] --- ## Data .pull-left[ Un **ggplot** necesita especificar mínimo tres cosas: los datos, la estética y una geometría. Siempre comenzamos a definir un objeto de trazado llamando a la **data** mediante `data %>% ggplot()` que simplemente le dice a `ggplot2` que vamos a trabajar con esos datos. Primero, cargamos el paquete `ggplot2` que es parte del `tidyverse`. ```r library(ggplot2) ``` ```r ranking_2022 %>% ggplot() ``` ] .pull-right[ <!-- --> ] --- ## Estética **Aesthetics** significa describir un objeto en nuestros gráficos. Sin estética no tenemos nada que mostrar en nuestros gráficos. Las variables del conjunto de datos se asignan a propiedades visuales de gráficos con **aesthetics mapping**. Depende del tipo de gráfico estadístico que estemos produciendo, pero generalmente mapeamos: * una variable que se mostrará en el eje `\(x\)` * una variable que se mostrará en el eje `\(y\)` (en algunos casos solo necesitamos mapear a un solo eje) * se pueden asignar otras variables al color, la forma, el tamaño, el color de relleno, etc. del objeto. --- background-image: url("img/aesthetics.png") background-size: contain --- ## Estética .pull-left[ En la mayoría de los casos, es posible que desee trazar una o dos variables: una en el eje `\(x\)` y otra en el eje `\(y\)`. Estas son estéticas posicionales y, por lo tanto, agregamos `aes(x = var1, y = var2)` a la llamada **ggplot()**. Sin embargo, también hay casos en los que hay que especificar una o incluso tres o más variables. ```r ranking_2022 %>% ggplot(aes(x = tamano)) ``` ] .pull-right[ <!-- --> ] --- ## Geometrías .pull-left[ Hay muchas geometrías diferentes (llamadas **geoms** porque cada función generalmente comienza con `geom_`) que se pueden agregar a un ggplot de forma predeterminada. Tenemos que decirle a `ggplot2` qué estilo queremos usar, por ejemplo, agregando `geom_point()` para crear un gráfico de puntos o gráfico de dispersión. ```r ranking_2022 %>% ggplot(aes(x = tamano)) + geom_bar() ``` ] .pull-right[ <!-- --> ] --- background-image: url("img/geoms.png") background-size: contain --- ## Facetas Las facetas dividen un conjunto en subconjuntos basados en los valores de uno o más variables categóricas. * **Facet** es un objeto que crea muchos gráficos pequeños que son variaciones de un solo gráfico. * Los datos se dividen en **grupos** (facetas) y los datos se trazan en sus propios gráficos usando el mismo sistema de coordenadas. * Tenemos dos opciones al generar facetas: * Gráfico dividido según filas y columnas: `facet_grid()` * Envolver subconjuntos en columnas: `facet_wrap()` --- background-image: url("img/facet.png") background-size: contain --- .panelset[ .panel[.panel-name[facet_grid1] .pull-left[ ```r ranking_2022 %>% ggplot(aes(x = tamano)) + geom_bar() + facet_grid(.~region) ``` ] .pull-right[ <!-- --> ] ] .panel[.panel-name[facet_grid2] .pull-left[ ```r ranking_2022 %>% ggplot(aes(x = tamano)) + geom_bar() + facet_grid(region~.) ``` ] .pull-right[ <!-- --> ] ] .panel[.panel-name[facet_grid3] .pull-left[ ```r ranking_2022 %>% ggplot(aes(x = tamano)) + geom_bar() + facet_grid(region~tipo_compania) ``` ] .pull-right[ <!-- --> ] ] .panel[.panel-name[facet_wrap] .pull-left[ ```r ranking_2022 %>% ggplot(aes(x = tamano)) + geom_bar() + facet_wrap(.~region) ``` ] .pull-right[ <!-- --> ] ] ] --- ## Temas visuales El tema se usa para controlar todos los elementos que no son datos en la trama. **ggplot2** proporciona valores predeterminados para la capa del tema (puede dejarlo como está). Puede anular el tema predeterminado, por ejemplo, con: - **theme_bw()** tema en blanco y negro - **theme()** función para ajustar la configuración de temas individuales - **element_** crea funciones para modificar la configuración del tema .pull-left[ Temas completos: `theme_grey()` `theme_bw()` `theme_light()` `theme_dark()` `theme_classic()` `theme_void()` ] .pull-right[ Elementos de un tema: `margin()` `element_blank()` `element_rect()` `element_line()` `element_text()` ... ] --- background-image: url("img/theme.png") background-size: contain --- # Algunos sitios de interés * [Códigos visualizaciones desafío #30díasdegráficos](https://github.com/sporella/nightingale) * [#30DayMapChallenge](https://github.com/sporella/30daymap) * [Gráficos Estadísticos con R](https://cran.r-project.org/doc/contrib/grafi3.pdf) * [Gráficos avanzados con ggplot](https://rua.ua.es/dspace/bitstream/10045/69767/1/Modulo_4_-_Graficos_avanzados_con_ggplot2.pdf) * Tukey, John (1977), Exploratory Data Analysis, Addison-Wesley. * Velleman, Paul and Hoaglin, David (1981), The ABC's of EDA: Applications, Basics, and Computing of Exploratory Data Analysis, Duxbury. * Wilkinson (2005). The Grammar of Graphics. 2nd ed. Statistics and Computing. Springer. * Wickham (2010). A Layered Grammar of Graphics. Journal of Computational and Graphical Statistics --- class: middle, center, inverse <br> <br> # Gramática de gráficos con `ggplot2` ## **CAPÍTULO 4** <br> <br> .center[ ### [@lindateachtech
](https://www.linkedin.com/in/lindateachtech/) ### [@lindateachtech
](https://twitter.com/lindateachtech) ]