class: inverse, center, middle <br> #### Programación y manejo de datos con R (Slides 06-A) ## Gráficos con ggplot2 (A): Primeras ideas <br> ### Pedro J. Pérez #### 2020, septiembre ###### (actualizadas el 04-09-2023) <br><br> #### e-mail: [pedro.j.perez@uv.es](mailto:pedro.j.perez@uv.es) #### Web del curso: [https://perezp44.github.io/intro-ds-23-24-web](https://perezp44.github.io/intro-ds-23-24-web) --- class: inverse, center, middle background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 95% 5% background-size: 10% ## Gráficos chulos con *ggplot2* <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> #### Uno de los mejores (que dices!?, el MEJOR!!!) sistema gráfico del MUNDO. --- background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 98% 2% background-size: 5% ##### el análisis gráfico es fundamental - El **análisis gráfico es fundamental** al presentar resultados, pero también en el análisis exploratorio: permite descubrir relaciones entre variables, y descartar o sugerir nuevas preguntas sobre los datos. <img src="data:image/png;base64,#../imagenes/tt_06_img_01_explore-visualice.png" width="75%" style="display: block; margin: auto;" /> -- -------------------------------------- - R tiene varios sistemas gráficos, pero **usaremos ggplot2** - *ggplot2* es un paquete de R para producir gráficos estadísticos. Bueno, en realidad **es todo un ecosistema**. Mira sus extensiones [[aquí]](https://exts.ggplot2.tidyverse.org/gallery/). - Es diferente porque tiene una **gramática subyacente**, basada en Grammar of Graphics (Wilkinson 2005). - Cuesta un poco (sólo un poco) más empezar, pero enseguida se ven los beneficios; además, es que **ahora mismo es el estándar**. --- class: inverse, center, middle background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 95% 5% background-size: 10% ## Primeras ideas sobre *ggplot2* <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> #### Primeras ideas para empezar a familiarizarnos con *ggplot2* --- background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 98% 2% background-size: 5% ##### ¿qué vemos en el gráfico de abajo? .pull-left[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-5-1.png" width="90%" style="display: block; margin: auto;" /> ] -- .pull-right[ <br> - gráfico de puntos - se representan 3 variables - Sepal.Length en el **eje X** - Petal.Length en el **eje Y** - Species en el **color de los puntos** ] -- ##### Importante para entender ggplot2 [ 🌟 ] Un gráfico tiene 3 componentes principales: - los **datos** que se van a representar (.orange[ggplot()] ) - un conjunto de **propiedades estéticas asociadas variables** del conjunto de datos. Por ejemplo, la posición en el eje X esta asociada a la variable Sepal.Length, el color de los puntos está asociado a los valores de la variable Species. ( .orange[aes()] ) - el **elemento geométrico que se va a representar**. En nuestro caso el elemento geométrico que usamos son puntos ( .orange[geom_point()] ), pero podrían haber sido las lineas ( .orange[geom_line()] ) o ... ( .grey[geom_xx()] ) --- ##### sintaxis de ggplot2 [ 🌟 ] ```r ggplot(iris, aes(x = Sepal.Length, y = Petal.Length, color = Species)) + geom_point() ``` <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-6-1.png" width="40%" style="display: block; margin: auto;" /> -- ##### Forma más compacta de escribirlo ```r ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() ``` --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r *iris ``` ] .panel2-grafico-00-auto[ ``` #> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> 1 5.1 3.5 1.4 0.2 setosa #> 2 4.9 3.0 1.4 0.2 setosa #> 3 4.7 3.2 1.3 0.2 setosa #> 4 4.6 3.1 1.5 0.2 setosa #> 5 5.0 3.6 1.4 0.2 setosa #> 6 5.4 3.9 1.7 0.4 setosa #> 7 4.6 3.4 1.4 0.3 setosa #> 8 5.0 3.4 1.5 0.2 setosa #> 9 4.4 2.9 1.4 0.2 setosa #> 10 4.9 3.1 1.5 0.1 setosa #> 11 5.4 3.7 1.5 0.2 setosa #> 12 4.8 3.4 1.6 0.2 setosa #> 13 4.8 3.0 1.4 0.1 setosa #> 14 4.3 3.0 1.1 0.1 setosa #> 15 5.8 4.0 1.2 0.2 setosa #> 16 5.7 4.4 1.5 0.4 setosa #> 17 5.4 3.9 1.3 0.4 setosa #> 18 5.1 3.5 1.4 0.3 setosa #> 19 5.7 3.8 1.7 0.3 setosa #> 20 5.1 3.8 1.5 0.3 setosa #> 21 5.4 3.4 1.7 0.2 setosa #> 22 5.1 3.7 1.5 0.4 setosa #> 23 4.6 3.6 1.0 0.2 setosa #> 24 5.1 3.3 1.7 0.5 setosa #> 25 4.8 3.4 1.9 0.2 setosa #> 26 5.0 3.0 1.6 0.2 setosa #> 27 5.0 3.4 1.6 0.4 setosa #> 28 5.2 3.5 1.5 0.2 setosa #> 29 5.2 3.4 1.4 0.2 setosa #> 30 4.7 3.2 1.6 0.2 setosa #> 31 4.8 3.1 1.6 0.2 setosa #> 32 5.4 3.4 1.5 0.4 setosa #> 33 5.2 4.1 1.5 0.1 setosa #> 34 5.5 4.2 1.4 0.2 setosa #> 35 4.9 3.1 1.5 0.2 setosa #> 36 5.0 3.2 1.2 0.2 setosa #> 37 5.5 3.5 1.3 0.2 setosa #> 38 4.9 3.6 1.4 0.1 setosa #> 39 4.4 3.0 1.3 0.2 setosa #> 40 5.1 3.4 1.5 0.2 setosa #> 41 5.0 3.5 1.3 0.3 setosa #> 42 4.5 2.3 1.3 0.3 setosa #> 43 4.4 3.2 1.3 0.2 setosa #> 44 5.0 3.5 1.6 0.6 setosa #> 45 5.1 3.8 1.9 0.4 setosa #> 46 4.8 3.0 1.4 0.3 setosa #> 47 5.1 3.8 1.6 0.2 setosa #> 48 4.6 3.2 1.4 0.2 setosa #> 49 5.3 3.7 1.5 0.2 setosa #> 50 5.0 3.3 1.4 0.2 setosa #> 51 7.0 3.2 4.7 1.4 versicolor #> 52 6.4 3.2 4.5 1.5 versicolor #> 53 6.9 3.1 4.9 1.5 versicolor #> 54 5.5 2.3 4.0 1.3 versicolor #> 55 6.5 2.8 4.6 1.5 versicolor #> 56 5.7 2.8 4.5 1.3 versicolor #> 57 6.3 3.3 4.7 1.6 versicolor #> 58 4.9 2.4 3.3 1.0 versicolor #> 59 6.6 2.9 4.6 1.3 versicolor #> 60 5.2 2.7 3.9 1.4 versicolor #> 61 5.0 2.0 3.5 1.0 versicolor #> 62 5.9 3.0 4.2 1.5 versicolor #> 63 6.0 2.2 4.0 1.0 versicolor #> 64 6.1 2.9 4.7 1.4 versicolor #> 65 5.6 2.9 3.6 1.3 versicolor #> 66 6.7 3.1 4.4 1.4 versicolor #> 67 5.6 3.0 4.5 1.5 versicolor #> 68 5.8 2.7 4.1 1.0 versicolor #> 69 6.2 2.2 4.5 1.5 versicolor #> 70 5.6 2.5 3.9 1.1 versicolor #> 71 5.9 3.2 4.8 1.8 versicolor #> 72 6.1 2.8 4.0 1.3 versicolor #> 73 6.3 2.5 4.9 1.5 versicolor #> 74 6.1 2.8 4.7 1.2 versicolor #> 75 6.4 2.9 4.3 1.3 versicolor #> 76 6.6 3.0 4.4 1.4 versicolor #> 77 6.8 2.8 4.8 1.4 versicolor #> 78 6.7 3.0 5.0 1.7 versicolor #> 79 6.0 2.9 4.5 1.5 versicolor #> 80 5.7 2.6 3.5 1.0 versicolor #> 81 5.5 2.4 3.8 1.1 versicolor #> 82 5.5 2.4 3.7 1.0 versicolor #> 83 5.8 2.7 3.9 1.2 versicolor #> 84 6.0 2.7 5.1 1.6 versicolor #> 85 5.4 3.0 4.5 1.5 versicolor #> 86 6.0 3.4 4.5 1.6 versicolor #> 87 6.7 3.1 4.7 1.5 versicolor #> 88 6.3 2.3 4.4 1.3 versicolor #> 89 5.6 3.0 4.1 1.3 versicolor #> 90 5.5 2.5 4.0 1.3 versicolor #> 91 5.5 2.6 4.4 1.2 versicolor #> 92 6.1 3.0 4.6 1.4 versicolor #> 93 5.8 2.6 4.0 1.2 versicolor #> 94 5.0 2.3 3.3 1.0 versicolor #> 95 5.6 2.7 4.2 1.3 versicolor #> 96 5.7 3.0 4.2 1.2 versicolor #> 97 5.7 2.9 4.2 1.3 versicolor #> 98 6.2 2.9 4.3 1.3 versicolor #> 99 5.1 2.5 3.0 1.1 versicolor #> 100 5.7 2.8 4.1 1.3 versicolor #> 101 6.3 3.3 6.0 2.5 virginica #> 102 5.8 2.7 5.1 1.9 virginica #> 103 7.1 3.0 5.9 2.1 virginica #> 104 6.3 2.9 5.6 1.8 virginica #> 105 6.5 3.0 5.8 2.2 virginica #> 106 7.6 3.0 6.6 2.1 virginica #> 107 4.9 2.5 4.5 1.7 virginica #> 108 7.3 2.9 6.3 1.8 virginica #> 109 6.7 2.5 5.8 1.8 virginica #> 110 7.2 3.6 6.1 2.5 virginica #> 111 6.5 3.2 5.1 2.0 virginica #> 112 6.4 2.7 5.3 1.9 virginica #> 113 6.8 3.0 5.5 2.1 virginica #> 114 5.7 2.5 5.0 2.0 virginica #> 115 5.8 2.8 5.1 2.4 virginica #> 116 6.4 3.2 5.3 2.3 virginica #> 117 6.5 3.0 5.5 1.8 virginica #> 118 7.7 3.8 6.7 2.2 virginica #> 119 7.7 2.6 6.9 2.3 virginica #> 120 6.0 2.2 5.0 1.5 virginica #> 121 6.9 3.2 5.7 2.3 virginica #> 122 5.6 2.8 4.9 2.0 virginica #> 123 7.7 2.8 6.7 2.0 virginica #> 124 6.3 2.7 4.9 1.8 virginica #> 125 6.7 3.3 5.7 2.1 virginica #> 126 7.2 3.2 6.0 1.8 virginica #> 127 6.2 2.8 4.8 1.8 virginica #> 128 6.1 3.0 4.9 1.8 virginica #> 129 6.4 2.8 5.6 2.1 virginica #> 130 7.2 3.0 5.8 1.6 virginica #> 131 7.4 2.8 6.1 1.9 virginica #> 132 7.9 3.8 6.4 2.0 virginica #> 133 6.4 2.8 5.6 2.2 virginica #> 134 6.3 2.8 5.1 1.5 virginica #> 135 6.1 2.6 5.6 1.4 virginica #> 136 7.7 3.0 6.1 2.3 virginica #> 137 6.3 3.4 5.6 2.4 virginica #> 138 6.4 3.1 5.5 1.8 virginica #> 139 6.0 3.0 4.8 1.8 virginica #> 140 6.9 3.1 5.4 2.1 virginica #> 141 6.7 3.1 5.6 2.4 virginica #> 142 6.9 3.1 5.1 2.3 virginica #> 143 5.8 2.7 5.1 1.9 virginica #> 144 6.8 3.2 5.9 2.3 virginica #> 145 6.7 3.3 5.7 2.5 virginica #> 146 6.7 3.0 5.2 2.3 virginica #> 147 6.3 2.5 5.0 1.9 virginica #> 148 6.5 3.0 5.2 2.0 virginica #> 149 6.2 3.4 5.4 2.3 virginica #> 150 5.9 3.0 5.1 1.8 virginica ``` ] --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r iris %>% *ggplot() ``` ] .panel2-grafico-00-auto[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/grafico-00_auto_02_output-1.png" width="95%" style="display: block; margin: auto;" /> ] --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r iris %>% ggplot() + * aes(x = Sepal.Length) ``` ] .panel2-grafico-00-auto[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/grafico-00_auto_03_output-1.png" width="95%" style="display: block; margin: auto;" /> ] --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r iris %>% ggplot() + aes(x = Sepal.Length) + * aes(y = Petal.Length) ``` ] .panel2-grafico-00-auto[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/grafico-00_auto_04_output-1.png" width="95%" style="display: block; margin: auto;" /> ] --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r iris %>% ggplot() + aes(x = Sepal.Length) + aes(y = Petal.Length) + * aes(color = Species) ``` ] .panel2-grafico-00-auto[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/grafico-00_auto_05_output-1.png" width="95%" style="display: block; margin: auto;" /> ] --- count: false ##### Gráfico en slow-motion! .panel1-grafico-00-auto[ ```r iris %>% ggplot() + aes(x = Sepal.Length) + aes(y = Petal.Length) + aes(color = Species) + * geom_point() ``` ] .panel2-grafico-00-auto[ <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/grafico-00_auto_06_output-1.png" width="95%" style="display: block; margin: auto;" /> ] <style> .panel1-grafico-00-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-grafico-00-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-grafico-00-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> -- <br> ##### La forma habitual(!) de escribirlo es: ```r ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() ``` --- ##### IMAGINA que harán las siguientes instrucciones. Después las ejecutas. ```r #- Fíjate: `sólo` hay `2 variables en aes()` ------------------------------------- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() #- Fíjate: ahora usamos `geom_line()` ------------------------------------------ ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_line() #- Fíjate: Ahora usamos `2 geom_xx`--------------------------------------------- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_smooth() #- Fíjate: volvemos a tener 3 variables asociadas a estéticas ---------------- ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() #- Fíjate**: hay `argumentos dentro de geom_point()`---------------------------- #- Uno de ellos es `color` ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point(color = "red", size = 2, alpha = 0.2) ``` --- class: inverse, center, middle background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 95% 5% background-size: 10% ### Entendiendo un poco más *ggplot2* <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> #### Ya tenemos las primeras ideas sobre ggplot2, ahora se trata de profundizar un poco para que podamos tener más control y flexibilidad al hacer nuestros gráficos. --- ##### vamos a profundizar un poco más en *ggplot2* Es importante que veas que estas 3 expresiones **hacen el mismo gráfico**: ```r ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() ggplot(iris) + geom_point(aes(Sepal.Length, Petal.Length)) ggplot() + geom_point(data = iris, aes(Sepal.Length, Petal.Length)) ``` .purple[<svg viewBox="0 0 512 512" style="height:1em;position:relative;display:inline-block;top:.1em;" xmlns="http://www.w3.org/2000/svg"> <path d="M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z"></path></svg>] Si utilizas la *tercera expresión*; es decir, si especificas los datos dentro de geom_xx(), es necesario poner el nombre del argumento: (.red[data = iris] , ...) [ 🌟 ] -- <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-11-1.png" width="66%" style="display: block; margin: auto;" /> --- ##### repito esto porque es IMPORTANTE .... [ 🌟 ] - Podemos especificar los **mappings** de variables en estéticas dentro de cada *geom_xx()* ```r ggplot(iris) + geom_point(aes(Sepal.Length, Petal.Length)) ``` -- <br> - Podemos especificar los **datos** dentro de cada *geom_xx()* . En este caso no te olvides de poner (.red[data = ...]) ```r ggplot() + geom_point(data = iris, aes(Sepal.Length, Petal.Length)) ``` -- <br> --------------------- - Bueno, sí ¿Y que más da? Pues importa y muuuuccho. - Esto **nos va a dar mucha flexibilidad**/control a nuestros gráficos. Lo vemos --- ##### ¿qué hacen estas 3 expresiones? ```r ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() + geom_smooth() ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point(aes(color = Species)) + geom_smooth() ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_smooth(aes(color = Species)) ``` -- <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-16-1.png" width="100%" style="display: block; margin: auto;" /> --- ##### ejemplos: ¿por qué no funcionan 3 de estas 4 expresiones? ```r ggplot(iris) + geom_point(aes(Sepal.Length, Petal.Length)) + geom_smooth(aes(color = Species)) #> Error in `geom_smooth()`: #> ! Problem while computing stat. #> ℹ Error occurred in the 2nd layer. #> Caused by error in `compute_layer()`: #> ! `stat_smooth()` requires the following missing aesthetics: x and y ggplot() + geom_point(data = iris, aes(Sepal.Length, Petal.Length)) + geom_line(aes(Sepal.Length, Petal.Length)) #> Error in `geom_line()`: #> ! Problem while computing aesthetics. #> ℹ Error occurred in the 2nd layer. #> Caused by error: #> ! objeto 'Sepal.Length' no encontrado ggplot(aes(Sepal.Length, Petal.Length)) + geom_point(data = iris) + geom_line() #> Error in `fortify()`: #> ! `data` must be a <data.frame>, or an object coercible by `fortify()`, #> not a <uneval> object. #> ℹ Did you accidentally pass `aes()` to the `data` argument? ggplot() + geom_point(data = iris, aes(Sepal.Length, Petal.Length)) + geom_line() ``` <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-17-1.png" width="55%" style="display: block; margin: auto;" /> --- ##### Un ejemplo un poco marciano ```r iris2 <- iris %>% filter(Species != "setosa") #- lirios que no son "setosa" ggplot() + geom_point(data = iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_smooth(data = iris2, aes(Sepal.Length, Petal.Length) ) ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point(aes(color = Species)) + geom_smooth(data = iris2) ``` -- <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-19-1.png" width="70%" style="display: block; margin: auto;" /> --- ##### otro ejemplo/tarea más: .panelset[ .panel[.panel-name[Tarea] Quiero que las 2 especies de lirios grandes se representen con el mismo color, ¿cómo lo hago? Hay varias soluciones, una de las más marcianas es la Solución 1. ] .panel[.panel-name[Solución 1] ```r iris_setosa <- iris %>% filter(Species == "setosa") #- me quedo con los lirios pequeños, los de clase "setosa" ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_point(data = iris_setosa, aes(color = Species)) + geom_smooth(data = iris2, aes(Sepal.Length, Petal.Length) ) ``` <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-20-1.png" width="70%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Solución 2] ```r iris_solo_2_clases <- iris %>% mutate(Species_2 = ifelse(Species %in% c("versicolor", "virginica"), "versi_virgi", "setosa")) ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_point(data = iris_setosa, aes(color = Species)) + geom_smooth(data = iris_solo_2_clases,aes(Sepal.Length, Petal.Length, color = Species_2) ) ``` <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-21-1.png" width="70%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Solución 3 (good)] ```r iris_solo_2_clases <- iris %>% mutate(Species_2 = ifelse(Species %in% c("versicolor", "virginica"), "versi_virgi", "setosa")) ggplot(iris_solo_2_clases, aes(Sepal.Length, Petal.Length, color = Species_2)) + geom_point() + geom_smooth() ``` <img src="data:image/png;base64,#slides_06_ggplot2_A_files/figure-html/unnamed-chunk-22-1.png" width="70%" style="display: block; margin: auto;" /> ] ] --- ##### un ejemplo más - Para ir acabando con la “filosofía”/sintaxis/gramática de ggplot2 **intenta imaginar** que gráficos hacen las 6 expresiones de más abajo. - Si no puedes, recuerda que siempre puedes ejecutar las ordenes en el ordenador. Fíjate sobre todo en la **tercera expresión** ```r ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_smooth() ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() + geom_smooth() ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point(color = "purple") + geom_smooth() ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) + geom_point() + geom_smooth(color = "brown") ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() + geom_smooth(aes(color = Species)) ggplot(iris) + geom_point(aes(Sepal.Length, Petal.Length, color = Species) ) + geom_smooth(aes(Sepal.Length, Petal.Length, color = Species)) ``` --- ##### veremos alguna vez otros gráficos? - SÍ!!!! pero aún falta un poco, hemos de ver más cosas (y sí, usando `iris`). - Si no puedes eperarte ve a está [Graph gallery](https://exts.ggplot2.tidyverse.org/gallery/) ##### *the aesthetic parameters* de cada geom_xx() - Cuando empecemos a hacer otros tipos de gráficos será de utilidad conocer que parámetros tiene cada `geom_xx()`. - Podremos verlos consultando la ayuda de cada `geom`, pero también puedes verlas [aquí](https://www.yihanwu.ca/post/geoms-and-aesthetic-parameters/) --- class: inverse, center, middle background-image: url(imagenes/ss_06_img_01_ggplot2-hex.png) background-position: 95% 5% background-size: 10% ### Más elementos de *ggplot2* <html><div style='float:left'></div><hr color='#EB811B' size=1px width=796px></html> ###### Como puedes imaginar, aún tenemos que ver más elementos de ggplot2: los títulos y leyendas, los ejes, el tema, coordenadas, etc… vamos a ello!! --- ##### más elementos de un ggplot() - Ya hemos presentado los principales elementos de los gráficos hechos con ggplot2, pero es evidente que **un gráfico tiene más elementos**. - Lógicamente, **hay que conocerlos un poco** para poder ajustar los gráficos a nuestras necesidades y mejorar su calidad. -- -------------------- Veremos algo de los siguientes elementos: - Títulos del gráfico - Themes - Small multiples (o Facetting) - Anotaciones - Ejes - Escalas - Stats (transformaciones estadísticas) - Position adjustments - Coordenadas ---------------------------------- .bg-washed-green.b--dark-green.ba.bw2.br3.shadow-5.ph4.mt5[ Será en las siguientes slides]