class: title-slide, middle, right background-image: url(https://images.unsplash.com/photo-1525909002-1b05e0c869d8?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=675&q=80) background-size: cover <h3> Gráficos</h3> # <h3> Miriam Lerma</h3><br> Febrero 2021 --- class: inverse # 1. Intro Porque hacer gráficos, que es ggplot y conceptos básicos para crear gráficos. <br> [Uso de ggplot](#intro)<br> [Cambiar estetica](#estetica)<br> [Exportar](#exportar) <br> Tipos de gráfico: - [puntos](#puntos) - [lineas](#lineas) - [barras](#barras) - [boxplot](#boxplot) - [trayectorias](#trayectorias) - [mapas](#mapas) <br> -- <h3> Ustedes </h3> - Conocimientos básicos de R (saben abrirlo, cargar paquetes y datos). - Quieren hacer gráficos con sus datos usando R. --- class: inverse # Créditos -Todo el material basado en el libro: [
R4DS, editado por Riva Quiroga](https://r4ds-en-espaniol.netlify.app/) -Y materiales de RLadies [
Zero to Hero](https://github.com/rladies/meetup-presentations_freiburg) [
Recursos en espanol ](https://github.com/rladies/recursos_en_espanol) [
RdesdeCero por Yanina Bellini](https://github.com/rladies/meetup-presentations_santarosa/blob/master/RdesdeCero) -En ingles: [IntroduccionToGGplot](https://englelab.gatech.edu/useRguide/introduction-to-ggplot2.html) [gg is for Grammar of Graphics](https://pkg.garrickadenbuie.com/trug-ggplot2) -Imágenes adicionales [
Portada por David Pisnoy](https://unsplash.com/@davidpisnoy)<br> [
Unsplash](https://unsplash.com/) --- ## 1.1. Teoría El objetivo de un gráfico es comunicar. En ciencia, la idea es brindar información de manera sencilla y fácil de entender. <img src="http://www.typesofgraphs.com/wp-content/uploads/2015/12/Typesofgraphs.png" height="350" /> Fuente: [VizThinker](https://paldhous.github.io/ucb/2016/dataviz/week2.html) --- ## 1.1. Teoría Graficar es transformar datos a visualizaciones que varian en tamaño, forma y colores. <img src="https://paldhous.github.io/ucb/2016/dataviz/img/class2_1.jpg" height="350" /> Fuente: [VizThinker](https://paldhous.github.io/ucb/2016/dataviz/week2.html) --- ## 1.1. Teoría Hay muchas maneras de graficar datos, pero hay diferentes maneras de percibirlos. <img src="https://paldhous.github.io/ucb/2016/dataviz/img/class2_2.jpg" height="350" /> Fuente: [VizThinker](https://paldhous.github.io/ucb/2016/dataviz/week2.html) --- ## 1.1. Teoría Cual es más intuitiva? <img src="https://paldhous.github.io/ucb/2016/dataviz/img/class2_4.jpg" height="350" /> Fuente: [VizThinker](https://paldhous.github.io/ucb/2016/dataviz/week2.html) --- ## 1.1. Teoría Cual debo de usar? Experimentar diferentes gráficas y elegir la que cuente mejor la historia. **Tableau Public** creó esta tabla que te da sugerencias de acuerdo a tu tipo de datos que visualización deberías usar. <img src="https://paldhous.github.io/ucb/2016/dataviz/img/class2_5.jpg" height="300" /> --- name: intro ## 1.2. Intro a ggplot Hay muchos paquetes para hacer gráficos ademas de **ggplot2**. - Usaremos **ggplot2** ya que es uno de los mas versátiles -- ... y del que encuentras más ayuda e inspiración. --- ## 1.2. Como funciona? Para objetivos prácticos, un gráfico se puede dividir en tres componentes esenciales: - **Datos** (data): conjunto de datos compuesto por variables que mapeamos. - **Estética** (aes): atributos estéticos del objeto geométrico, posición color, forma, tamaño. - **Geometría** (geom): objeto geométrico en cuestión. Puntos, lineas, barras? El paquete **ggplot** funciona por **capas**, si han usado SIG (sistema de información geográfica) estarán mas familiarizados. <img src="https://englelab.gatech.edu/useRguide/images/dataviz/ge_geom.png" height="200" /> Fuente: [ggplot2 book](https://englelab.gatech.edu/useRguide/working-with-data-overview.html) --- ## 1.3. Instalar y cargar ```r install.packages("ggplot2") ``` Otros paquetes que nos serán útiles hoy: ```r library(datos) ``` ``` ## Warning: package 'datos' was built under R version 4.2.3 ``` ```r library(tidyverse) library(ggplot2) ``` --- ## 1.3. Instalar y cargar Cargar datos de prueba ```r Prueba<-datos::clima ``` --- ## 1.3. Agregar datos ```r ggplot(data=Prueba) ``` -- ![](Clase2_files/figure-html/unnamed-chunk-12-1.png)<!-- --> --- ## 1.3. Agregar ejes ```r ggplot(data=Prueba,mapping=aes(x=humedad,y=visibilidad)) ``` ![](Clase2_files/figure-html/unnamed-chunk-15-1.png)<!-- --> Noten que sus ejes tienen que ser columnas en su tabla. --- ## 1.3. Agregar geometría ```r ggplot(data=Prueba, mapping=aes(x=humedad,y=visibilidad))+ * geom_point() ``` Nota: te salio un warning? Que dice el warning? Te avisa que había NAs y que no se incluyeron en el gráfico. --- ## 1.4. Tipos de gráficos Hoy veremos: -Puntos -Lineas -Barras -Boxplots -Trayectorias -Mapas ... pero hay muchos mas. .center[ <img src="http://www.typesofgraphs.com/wp-content/uploads/2015/12/Typesofgraphs.png" height="300" /> ] --- name: puntos ## 1.4. Gráfico de puntos Datos inventados de camarones, tamaño y densidad del cultivo. ```r Especies<-c('Lito','Lito','Lito','Lito','Lito') Camarones<-as.data.frame(Especies) Camarones$Tamanio<-c(1.5,1.6,1.8,1.9,2.1) Camarones$Densidad<-c(100,200,300,400,500) ``` --- ## 1.4. Gráfico de puntos Gráfico de datos inventados de camarones, tamaño y densidad del cultivo. ```r ggplot(data=Camarones,mapping=aes(x=Tamanio, y=Densidad))+ * geom_point() ``` ![](Clase2_files/figure-html/unnamed-chunk-23-1.png)<!-- --> --- name: lineas ## 1.4. Gráfico de lineas Datos inventados de tipo de algas, en meses (tiempo) y densidad (cantidad) ```r Algas<-c('B','E','B','B','B','B','E','B','E','B') MareaRoja<-as.data.frame(Algas) MareaRoja$Tiempo<-c(1,2,3,4,5,6,7,8,9,10) MareaRoja$Cantidad<-c(100,200,300,200,200,300,400,500,700,200) ``` --- ## 1.4. Gráfico de lineas Gráfico de datos inventados de tipo de bacterias, meses (tiempo) y densidad (cantidad) ```r ggplot(data=MareaRoja,mapping=aes(x=Tiempo, y=Cantidad))+ * geom_line() ``` ![](Clase2_files/figure-html/unnamed-chunk-27-1.png)<!-- --> --- name: barras ## 1.4. Gráfico de barras Datos Inventados de microbiota vaginal en mujeres de diferente edad, y densidad (cantidad) ```r Microbiota<-c('B','E','B','B','B','B','E','B','E','B') Microbiota<-as.data.frame(Microbiota) Microbiota$Edad<-c(20,25,30,35,40,45,50,55,60,65) Microbiota$Cantidad<-c(100,200,300,200,200,300,400,500,700,200) ``` --- ## 1.4. Gráfico de barras Gráfico de datos inventados ```r ggplot(data=Microbiota,mapping=aes(x=Edad, y=Cantidad))+ * geom_bar() ``` Error: stat_count() can only have an x or y aesthetic. Hay que agregar un argumento porque no sabe que quieres en las barras. --- ## 1.4. Gráfico de barras Gráfico de datos inventados de microbiota por edad y cantidades ```r ggplot(data=Microbiota,mapping=aes(x=Edad, y=Cantidad))+ * geom_bar(stat='identity') ``` ![](Clase2_files/figure-html/unnamed-chunk-32-1.png)<!-- --> --- name: boxplot ## 1.4. Boxplot Datos inventados de salinidad en Bahía de Santa María diferencias en las estaciones muestreadas ```r Salinidad<-c(38,39,38,37,36,40,38,36,35,38) Mes<-c(1,2,3,4,5,6,7,8,9,10) Estacion<-c(1,1,1,1,1,2,2,2,2,2) BSM<-as.data.frame(Salinidad) BSM$Mes<-Mes BSM$Estacion<-as.factor(Estacion) ``` --- ## 1.4. Boxplot Gráfico de datos inventados de salinidad en Bahía de Santa María diferencias en las estaciones muestreadas. ```r ggplot(data = BSM, aes(x=Estacion, y = Salinidad, group=Estacion)) + * geom_boxplot() ``` ![](Clase2_files/figure-html/unnamed-chunk-36-1.png)<!-- --> --- name: trayectorias ## 1.4. Trayectorias Datos inventados de un bobo café que tenemos datos de latitud y longitud. ```r Latitud<-c(8,9,10,9,8,6,5,9,8,7,6,5) #eje x Longitud<-c(5,6,7,6,5,4,3,4,5,6,7,5) #eje y Bobos<-as.data.frame(Longitud) Bobos$Latitud<-Latitud ``` --- ## 1.4. Trayectorias Gráficos de datos inventados de un bobo café que tenemos datos de latitud y longitud. ```r ggplot(data = Bobos, aes(x = Latitud, y = Longitud)) + * geom_path() ``` ![](Clase2_files/figure-html/unnamed-chunk-40-1.png)<!-- --> --- name: mapas ## 1.4. Mapas ```r library(rnaturalearth) library(rnaturalearthdata) ``` ``` ## ## Attaching package: 'rnaturalearthdata' ``` ``` ## The following object is masked from 'package:rnaturalearth': ## ## countries110 ``` ```r world <- ne_countries(scale = "medium", returnclass = "sf") # en clase sf ``` --- ## 1.4. Mapas Coordenadas de Sinaloa approx. 20 grados Norte, 110 grados Oeste (Noroeste) ```r ggplot()+ * geom_sf(data = world) + * coord_sf(xlim = c(-110, -105), ylim = c(20, 25), expand = FALSE) ``` ![](Clase2_files/figure-html/unnamed-chunk-45-1.png)<!-- --> --- class: inverse # Ejercicios
Crea un gráfico de puntos con los datos de Pingüinos 🐧 .panelset[ .panel[.panel-name[Datos] - Carga los datos ```r library(datos) Pingus<-datos::pinguinos ``` ] .panel[.panel-name[Rellenar] - Rellena los espacios (*****) para crear un gráfico de puntos el largo del pico y el largo de la aleta. ```r #ggplot(data=***, mapping=aes(x=***,y=***))+ # geom_***() ``` ] .panel[.panel-name[Respuesta] ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm))+ geom_point() ``` ![](Clase2_files/figure-html/unnamed-chunk-50-1.png)<!-- --> ] ] --- name: estetica class: title-slide, inverse, right, middle background-image: url(https://images.unsplash.com/photo-1525909002-1b05e0c869d8?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=675&q=80) background-size:cover # 2. Estéticas --- ## 2.1. Colores de los símbolos ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, * color=especie))+ geom_point() ``` ![](Clase2_files/figure-html/unnamed-chunk-53-1.png)<!-- --> --- ## 2.2. Temas ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point()+ * theme_bw() ``` ![](Clase2_files/figure-html/unnamed-chunk-56-1.png)<!-- --> --- ## 2.3. Fondos ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point()+ theme_bw()+ * theme(panel.background = element_rect(fill = 'darkblue')) ``` ![](Clase2_files/figure-html/unnamed-chunk-59-1.png)<!-- --> --- ## 2.4. Modificar ejes ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point()+ theme_bw()+ * xlab('Largo Pico')+ylab('Largo Aleta') ``` ![](Clase2_files/figure-html/unnamed-chunk-62-1.png)<!-- --> --- ## 2.5. Tamaño de letras ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point()+ theme_bw()+ * theme(axis.title = element_text(size=20)) ``` ![](Clase2_files/figure-html/unnamed-chunk-65-1.png)<!-- --> --- ## 2.6. Leyendas ```r ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point()+ theme_bw()+ * theme(legend.position = "top") ``` ![](Clase2_files/figure-html/unnamed-chunk-68-1.png)<!-- --> --- ## 2.7 Cheat sheet Help>CheatSheets>Data Visualization with ggplot --- ## 2.8. Errores comunes No tener los datos ordenados. Noten que para definir los ejes usamos columnas, por lo tanto es importante que tengan sus datos ordenados de esta manera. Si no los tienen asi por ahora, lo veremos mas adelante en 'ordenar mis datos'. <img src="https://r4ds-en-espaniol.netlify.app/diagrams_w_text_as_path/es/visualization-stat-bar.svg" width="600" /> Fuente: [R4DS](https://r4ds-en-espaniol.netlify.app/) --- ## 2.8. Errores comunes de sintaxis No poner el **+** ```r #ggplot(data=Pingus, # mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie)) # geom_point() ``` -- Poner el **+** en el lugar incorrecto ```r #ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie)) # +geom_point() ``` -- No cerrar paréntesis ```r #ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie)+ # geom_point() ``` Falta un parentesis despues de especie. --- ## 2.9. Grafico como objeto Se pueden guardar los gráficos como objeto ```r MiGrafico<-ggplot(data=Pingus, mapping=aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+ geom_point() ``` Y agregar estéticas a su gráfico base con el signo de + ```r *MiGrafico+ theme_bw()+ theme(legend.position = "top") ``` --- ## 2.10. Omitir partes No necesitan escribir todo (data, mapping se puede omitir) si siguen un orden. ```r MiGrafico<-ggplot(Pingus, aes(x=largo_pico_mm,y=largo_aleta_mm, color=especie))+geom_point() MiGrafico ``` ![](Clase2_files/figure-html/unnamed-chunk-77-1.png)<!-- --> --- class: inverse # Ejercicios
- Crear un gráfico de puntos con los datos de diamantes <br> - Graficar el *precio* por el *quilate* - - Cambiar el color de lo puntos de acuerdo al *corte* - Cambiar el nombre en el eje x por 'Precio en dolares' y el eje y por 'kt'. .panelset[ .panel[.panel-name[Datos] - Crear un gráfico de puntos con los datos de diamantes ```r Diamantes<-datos::diamantes ``` ] .panel[.panel-name[Rellenar] Graficar el *precio* por el *quilate* y cambiar el color de lo puntos de acuerdo al *corte* y cambiar el nombre en el eje x por *Precio en dolares* y el eje y por *kt*. ```r #ggplot(data=***,mapping=aes(x=***, y=***, color=****))+ # geom_****()+ # theme_bw()+ # xlab("**")+ylab("***") ``` ] .panel[.panel-name[Respuesta] ```r ggplot(data=Diamantes,mapping=aes(x=precio, y=quilate, color=corte))+ geom_point()+ theme_bw()+ xlab("Precio en pesos")+ylab("kt") ``` Gráfico ![](Clase2_files/figure-html/unnamed-chunk-81-1.png)<!-- --> ] ] --- name: exportar # 3. Exportar Para exportar tu figura puedes usar la función **ggsave** ```r ggsave(Figura, filename = "~/Figura.png", width = 24, height = 24, units = "in", dpi = 500) ``` --- # 4. Otras posibilidades .pull-left[ Los gráficos se pueden animar. ```r library(gganimate) library(plotly) ``` <img src="https://www.datanovia.com/en/wp-content/uploads/dn-tutorials/r-tutorial/images/transition_time.gif" height="350" /> ] .pull-right[ Explorar: - [Visualizaciones en R](https://www.notion.so/Data-Viz-Bookmarks-dc01718020bd4fd6a8a4ca80e6bce933) by Silvia Canelón (@spcanelon) and Tom Mock (@thomas_mock) <br> - Twitter: <br> #tidytuesday <br> #DatosDeMiercoles, #30díasdegráficos <br> - [RGraphGallery](https://www.r-graph-gallery.com/) <br> - [DataToViz](https://www.data-to-viz.com/) <br> - [Coolors](https://coolors.co/) <br> ] --- class: inverse # Recapitulando - [Uso de ggplot](#intro)<br> - Grafico de [puntos](#puntos) - Grafico de [lineas](#lineas) - Grafico de [barras](#barras) - Grafico de [caja](#boxplot) - [Trayectorias](#trayectorias) - [Mapas](#mapas) <br> - [Cambiar estetica](#estetica) - [Exportar](#exportar) <br> .right[ ### Contacto Para dudas, comentarios y sugerencias: <br> Escríbeme a miriamjlerma@gmail.com Este material esta accesible <br> y se encuentra en mi [
github](https://github.com/MiriamLL/Curso_CIAD/)<br> y mi [
página](https://www.miriam-lerma.com) ] <h1> .right[ [
](https://www.miriam-lerma.com/teaching.html) ]</h1>