class: center, middle, inverse, title-slide # Visualizando dados ###
Renata Oliveira --- layout: true <div class="my-footer"> <span> <a href="https://places.education" target="_blank">https://places.education</a> </span> </div> --- class: center, middle ## Retrospecto --- ## Modelo conceitual da análise de dados ![Modelo de Data Science](https://retaoliveira.github.io/relements/figures/dataR.png) --- ## Tipos de dados - Os tipos de dados mais comuns são `character`, `numeric`, `factor`e `logical`. ## Tipos de classes de objetos no R - As classes de organização dos dados mais comuns são `vector`, `list`, `matrix` e `dataframe`. --- ## RMarkdown <img src="img/render.png" width="100%" style="display: block; margin: auto;" /> .footnote[ Alison Hill [Teaching in Production](https://rstudio-education.github.io/teaching-in-production/slides/index.html#1) ] --- class: middle # O que é um conjunto de dados? --- ## Terminologia - Cada linha é uma **observação** - Cada coluna é uma **variável** ```r starwars ``` ``` ## # A tibble: 87 x 14 ## name height mass hair_color skin_color eye_color birth_year ## <chr> <int> <dbl> <chr> <chr> <chr> <dbl> ## 1 Luke S~ 172 77 blond fair blue 19 ## 2 C-3PO 167 75 <NA> gold yellow 112 ## 3 R2-D2 96 32 <NA> white, bl~ red 33 ## 4 Darth ~ 202 136 none white yellow 41.9 ## 5 Leia O~ 150 49 brown light brown 19 ## 6 Owen L~ 178 120 brown, gr~ light blue 52 ## # ... with 81 more rows, and 7 more variables: sex <chr>, ## # gender <chr>, homeworld <chr>, species <chr>, films <list>, ## # vehicles <list>, starships <list> ``` --- ## Luke Skywalker ![luke-skywalker](img/luke-skywalker.png) ## O que está no conjunto de dados StarWars?? Dê uma olhada `glimpse` nos dados: ```r glimpse(starwars) ``` ``` ## Rows: 87 ## Columns: 14 ## $ name <chr> "Luke Skywalker", "C-3PO", "R2-D2", "Darth V~ ## $ height <int> 172, 167, 96, 202, 150, 178, 165, 97, 183, 1~ ## $ mass <dbl> 77.0, 75.0, 32.0, 136.0, 49.0, 120.0, 75.0, ~ ## $ hair_color <chr> "blond", NA, NA, "none", "brown", "brown, gr~ ## $ skin_color <chr> "fair", "gold", "white, blue", "white", "lig~ ## $ eye_color <chr> "blue", "yellow", "red", "yellow", "brown", ~ ## $ birth_year <dbl> 19.0, 112.0, 33.0, 41.9, 19.0, 52.0, 47.0, N~ ## $ sex <chr> "male", "none", "none", "male", "female", "m~ ## $ gender <chr> "masculine", "masculine", "masculine", "masc~ ## $ homeworld <chr> "Tatooine", "Tatooine", "Naboo", "Tatooine",~ ## $ species <chr> "Human", "Droid", "Droid", "Human", "Human",~ ## $ films <list> <"The Empire Strikes Back", "Revenge of the~ ## $ vehicles <list> <"Snowspeeder", "Imperial Speeder Bike">, <~ ## $ starships <list> <"X-wing", "Imperial shuttle">, <>, <>, "TI~ ``` --- .midi[ .question[ Quantas linhas e colunas tem este conjunto de dados? O que representa cada linha? O que representa cada coluna? ] ] ```r ?starwars ``` <img src="img/starwars-help.png" width="60%" style="display: block; margin: auto;" /> --- .question[ Quantas linhas e colunas tem este conjunto de dados? ] .pull-left[ ```r nrow(starwars) # number of rows ``` ``` ## [1] 87 ``` ```r ncol(starwars) # number of columns ``` ``` ## [1] 14 ``` ```r dim(starwars) # dimensions (row column) ``` ``` ## [1] 87 14 ``` ] --- class: middle # Análise exploratória de dados --- ## O que é AED? - A análise exploratória de dados (AED) é uma abordagem para analisar conjuntos de dados visando resumir suas principais características - Muitas vezes, é possível de maneira visual - é nisto que nos vamos concentrar primeiro - Mas também podemos calcular estatísticas resumidas e realizar discussões/manipulação/transformação de dados nesta (ou antes) fase da análise -- é nisto que nos concentraremos a seguir --- ## Massa vs. altura .midi[ .question[ Como você descreveria a relação entre massa e altura dos personagens de Starwars? Que outras variáveis nos ajudariam a entender as observações nos dados que não seguem a tendência geral? Quem é o personagem não tão alto mas realmente rechonchudo? ] ] -- <img src="index_files/figure-html/unnamed-chunk-8-1.png" width="50%" style="display: block; margin: auto;" /> --- ## Jabba! <img src="img/jabbaplot.png" width="80%" style="display: block; margin: auto;" /> --- class: middle # Data visualization --- ## Visualização de dados > *"The simple graph has brought more information to the data analyst's mind than any other device." --- John Tukey* - A visualização de dados é a criação e estudo da representação visual dos dados - Muitas ferramentas para visualização de dados -- R é uma delas - Muitas abordagens/sistemas dentro de R para fazer visualizações de dados -- **ggplot2*** é uma delas, e é isso que vamos usar --- ## ggplot2 `\(\in\)` tidyverse .pull-left[ <img src="img/ggplot2-part-of-tidyverse.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right[ - Oggplot2*** é o pacote de visualização de dados do tidyverse - ggplot2" em "ggplot2" significa Gramática Gráfica - Inspirado no livro **Gramática de Gráficos** de Leland Wilkinson ] --- ## Gramática dos gráficos .pull-left-narrow[ Uma gramática de gráficos é uma ferramenta que nos permite descrever de forma concisa os componentes de um gráfico ] .pull-right-wide[ <img src="img/grammar-of-graphics.png" width="100%" style="display: block; margin: auto;" /> ] .footnote[ Source: [BloggoType](http://bloggotype.blogspot.com/2016/08/holiday-notes2-grammar-of-graphics.html)] --- ## Massa vs. altura ```r ggplot(data = starwars, mapping = aes(x = height, y = mass)) + geom_point() + labs(title = "Mass vs. height of Starwars characters", x = "Height (cm)", y = "Weight (kg)") ``` ``` ## Warning: Removed 28 rows containing missing values (geom_point). ``` <img src="index_files/figure-html/mass-height-1.png" width="40%" style="display: block; margin: auto;" /> --- .question[ - Quais são as funções que fazem a plotagem? - Qual é o conjunto de dados que está sendo plotado? - Quais variáveis mapeiam quais características (estética) da plotagem? - O que significa o aviso?<sup>+</sup> ] ```r ggplot(data = starwars, mapping = aes(x = height, y = mass)) + geom_point() + labs(title = "Mass vs. height of Starwars characters", x = "Height (cm)", y = "Weight (kg)") ``` ``` ## Warning: Removed 28 rows containing missing values (geom_point). ``` .footnote[ <sup>+</sup>Suprimindo aviso para os slides subseqüentes para economizar espaço ] --- ## Hello ggplot2! - ggplot() é a função principal no ggplot2 - As parcelas são construídas em camadas - A estrutura do código para as parcelas pode ser resumida como ```r ggplot(data = [dataset], mapping = aes(x = [x-variable], y = [y-variable])) + geom_xxx() + other options ``` - O pacote ggplot2 vem com o pacote tidyverse ```r library(tidyverse) ``` - Para ajuda com ggplot2, veja [ggplot2.tidyverse.org](http://ggplot2.tidyverse.org/) --- class: middle # Por que visualizamos? --- ## O quarteto de Anscombe .small[ .pull-left[ ``` ## set x y ## 1 I 10 8.04 ## 2 I 8 6.95 ## 3 I 13 7.58 ## 4 I 9 8.81 ## 5 I 11 8.33 ## 6 I 14 9.96 ## 7 I 6 7.24 ## 8 I 4 4.26 ## 9 I 12 10.84 ## 10 I 7 4.82 ## 11 I 5 5.68 ## 12 II 10 9.14 ## 13 II 8 8.14 ## 14 II 13 8.74 ## 15 II 9 8.77 ## 16 II 11 9.26 ## 17 II 14 8.10 ## 18 II 6 6.13 ## 19 II 4 3.10 ## 20 II 12 9.13 ## 21 II 7 7.26 ## 22 II 5 4.74 ``` ] ] .small[ .pull-right[ ``` ## set x y ## 23 III 10 7.46 ## 24 III 8 6.77 ## 25 III 13 12.74 ## 26 III 9 7.11 ## 27 III 11 7.81 ## 28 III 14 8.84 ## 29 III 6 6.08 ## 30 III 4 5.39 ## 31 III 12 8.15 ## 32 III 7 6.42 ## 33 III 5 5.73 ## 34 IV 8 6.58 ## 35 IV 8 5.76 ## 36 IV 8 7.71 ## 37 IV 8 8.84 ## 38 IV 8 8.47 ## 39 IV 8 7.04 ## 40 IV 8 5.25 ## 41 IV 19 12.50 ## 42 IV 8 5.56 ## 43 IV 8 7.91 ## 44 IV 8 6.89 ``` ] ] --- ## Resumindo o quarteto da Anscombe ```r quartet %>% group_by(set) %>% summarise( mean_x = mean(x), mean_y = mean(y), sd_x = sd(x), sd_y = sd(y), r = cor(x, y) ) ``` ``` ## # A tibble: 4 x 6 ## set mean_x mean_y sd_x sd_y r ## <fct> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 I 9 7.50 3.32 2.03 0.816 ## 2 II 9 7.50 3.32 2.03 0.816 ## 3 III 9 7.5 3.32 2.03 0.816 ## 4 IV 9 7.50 3.32 2.03 0.817 ``` --- ## Visualizando o quarteto de Anscombe <img src="index_files/figure-html/quartet-plot-1.png" width="80%" style="display: block; margin: auto;" /> --- ## Idade no primeiro beijo .question[ Você vê algo fora do comum? ] <img src="index_files/figure-html/unnamed-chunk-15-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Visitas ao Facebook .question[ Como as pessoas estão relatando valores mais baixos versus valores mais altos de visitas da FB? ] <img src="index_files/figure-html/unnamed-chunk-16-1.png" width="50%" style="display: block; margin: auto;" /> --- class: middle # ggplot2 ❤️ 🐧 --- ## ggplot2 `\(\in\)` tidyverse .pull-left[ <img src="img/ggplot2-part-of-tidyverse.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right[ - **ggplot2** is tidyverse's data visualization package - Structure of the code for plots can be summarized as ```r ggplot(data = [dataset], mapping = aes(x = [x-variable], y = [y-variable])) + geom_xxx() + other options ``` ] --- ## Data: Palmer Penguins Medidas para espécies de pinguins, ilha no Arquipélago de Palmer, tamanho (comprimento da barbatana, massa corporal, dimensões do bico) e sexo. .pull-left-narrow[ <img src="img/penguins.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right-wide[ ```r library(palmerpenguins) ``` ``` ## Warning: package 'palmerpenguins' was built under R version 4.1.3 ``` ```r glimpse(penguins) ``` ``` ## Rows: 344 ## Columns: 8 ## $ species <fct> Adelie, Adelie, Adelie, Adelie, Adeli~ ## $ island <fct> Torgersen, Torgersen, Torgersen, Torg~ ## $ bill_length_mm <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.~ ## $ bill_depth_mm <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.~ ## $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195~ ## $ body_mass_g <int> 3750, 3800, 3250, NA, 3450, 3650, 362~ ## $ sex <fct> male, female, female, NA, female, mal~ ## $ year <int> 2007, 2007, 2007, 2007, 2007, 2007, 2~ ``` ] --- .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-21-1.png" width="70%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões de Adelie, Chinstrap, e Gentoo Penguins", x = "Largura do bico (mm)", y = "Comprimento do bico (mm)", colour = "Espécies") ``` ``` ## Warning: Removed 2 rows containing missing values (geom_point). ``` ] ] --- class: middle # Codificação em voz alta --- .midi[ > **Comece com o data frame `penguins`** ] .pull-left[ ```r *ggplot(data = penguins) ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-22-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > **atribua a largura do bico (bill depth) ao eixo x** ] .pull-left[ ```r ggplot(data = penguins, * mapping = aes(x = bill_depth_mm)) ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-23-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > **e atribua o comprimento do bico (bill length) ao eixo y** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, * y = bill_length_mm)) ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-24-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > **Represente cada observação com um ponto** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm)) + * geom_point() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-25-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > **e mapeie as espécies para a cor de cada ponto.** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, * colour = species)) + geom_point() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-26-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > **Título do gráfico "Largura e comprimento do bico"** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + * labs(title = "Largura e comprimento do bico") ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-27-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > Título do gráfico "Largura e comprimento do bico" > **e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo"** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", * subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo") ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-28-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > Título do gráfico "Largura e comprimento do bico", > e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo", > **rotule os eixos x e y como "Largura do bico (mm)" and "Comprimento do bico (mm)", respectivamente** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo", * x = "Largura do bico (mm)", y = "Comprimento do bico (mm)") ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-29-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > Título do gráfico "Largura e comprimento do bico", > e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo", > rotule os eixos x e y como "Largura do bico (mm)" and "Comprimento do bico (mm)", respectivamente, > **rotule a legenda "Espécies"** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo", x = "Largura do bico (mm)", y = "Comprimento do bico (mm)", * colour = "Espécies") ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-30-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > Título do gráfico "Largura e comprimento do bico", > e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo", > rotule os eixos x e y como "Largura do bico (mm)" and "Comprimento do bico (mm)", respectivamente, > rotule a legenda "Espécies" > **e adicione uma legenda para os dados.** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo", x = "Largura do bico (mm)", y = "Comprimento do bico (mm)", colour = "Espécies", * caption = "Dados: Palmer Station LTER / palmerpenguins package") ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-31-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .midi[ > Comece com o dataframe `penguins`, > atribua a largura do bico (bill depth) ao eixo x > e atribua o comprimento do bico (bill length) ao eixo y. > Represente cada observação com um ponto > e mapeie as espécies para a cor de cada ponto > Título do gráfico "Largura e comprimento do bico", > e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo", > rotule os eixos x e y como "Largura do bico (mm)" and "Comprimento do bico (mm)", respectivamente, > rotule a legenda "Espécies" > e adicione uma legenda para os dados. > **Finalmente, utilize uma escala de cores discreta para leitores com algum tipo de daltonismo.** ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo", x = "Largura do bico (mm)", y = "Comprimento do bico (mm)", colour = "Espécies", caption = "Dados: Palmer Station LTER / palmerpenguins package") + * scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-32-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-33-1.png" width="70%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Code] ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + labs(title = "Largura e comprimento do bico", subtitle = "Dimensões para penguins Adelie, Chinstrap, e Gentoo", x = "Largura do bico (mm)", y = "Comprimento do bico (mm)", colour = "Espécies", caption = "Dados: Palmer Station LTER / palmerpenguins package") + scale_colour_viridis_d() ``` ``` ## Warning: Removed 2 rows containing missing values (geom_point). ``` ] .panel[.panel-name[Narrative] .midi[ Comece com o dataframe `penguins`, atribua a largura do bico (bill depth) ao eixo x e atribua o comprimento do bico (bill length) ao eixo y. Represente cada observação com um ponto e mapeie as espécies para a cor de cada ponto. Título do gráfico "Largura e comprimento do bico", e adicione o subtítulo "Dimensões para penguins Adelie, Chinstrap, e Gentoo", rotule os eixos x e y como "Largura do bico (mm)" and "Comprimento do bico (mm)", respectivamente. Rotule a legenda "Espécies" e adicione uma legenda para os dados. Finalmente, utilize uma escala de cores discreta para leitores com algum tipo de daltonismo. ] ] ] --- ## Nomes dos argumentos .tip[ Você pode omitir os nomes dos dois primeiros argumentos ao construir gráfico com `ggplot()`. ] .pull-left[ ```r ggplot(data = penguins, mapping = aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, colour = species)) + geom_point() + scale_colour_viridis_d() ``` ] --- class: middle # Aesthetics --- ## Opções de Aesthetics Parâmetros de gráficos que podem ser **especificados para uma variável** nos dado são - `colour` - `shape` - `size` - `alpha` (transparência) --- ## Cor .pull-left[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, * colour = species)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-34-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Forma Mapeado para uma variável diferente da **cor**. .pull-left[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, colour = species, * shape = island)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-35-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Forma Mapeado para a mesma variável como **cor**. .pull-left[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, colour = species, * shape = species)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-36-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Tamanho .pull-left[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, colour = species, shape = species, * size = body_mass_g)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-37-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Alpha .pull-left[ ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, colour = species, shape = species, size = body_mass_g, * alpha = flipper_length_mm)) + geom_point() + scale_colour_viridis_d() ``` ] .pull-right[ <img src="index_files/figure-html/unnamed-chunk-38-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .pull-left[ **Mapping** ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, * size = body_mass_g, * alpha = flipper_length_mm)) + geom_point() ``` <img src="index_files/figure-html/unnamed-chunk-39-1.png" width="100%" style="display: block; margin: auto;" /> ] .pull-right[ **Setting** ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + * geom_point(size = 2, alpha = 0.5) ``` <img src="index_files/figure-html/unnamed-chunk-40-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Mapping vs. setting - **Mapping:** Determinar o tamanho, alfa, etc. dos pontos com base nos valores de uma variável nos dados - vai para `aes()` - **Setting:** Determinar o tamanho, alfa, etc. dos pontos **não** com base nos valores de uma variável nos dados - entra em `geom_*()` (isto foi `geom_point()` no exemplo anterior, mas aprenderemos sobre outros geoms em breve!) --- class: middle # Faceting --- ## Faceting - gráficos menores que exibem diferentes subconjuntos dos dados - Útil para explorar relações condicionais e grandes dados --- .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-41-1.png" width="70%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Código] ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_grid(species ~ island) ``` ``` ## Warning: Removed 2 rows containing missing values (geom_point). ``` ] ] --- ## Várias maneiras de fazer "facets" .question[ Nos próximos slides, descreva o que cada gráfico apresenta. Pense em como o código se relaciona com a saída. **Nota:** Os gráficos nos próximos slides não têm títulos, rótulos de eixos, etc., porque queremos que você descubra o que está acontecendo nos gráficos. Mas você deve sempre rotular! ] --- ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_grid(species ~ sex) ``` <img src="index_files/figure-html/unnamed-chunk-42-1.png" width="60%" style="display: block; margin: auto;" /> --- ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_grid(sex ~ species) ``` <img src="index_files/figure-html/unnamed-chunk-43-1.png" width="60%" style="display: block; margin: auto;" /> --- ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_wrap(~ species) ``` <img src="index_files/figure-html/unnamed-chunk-44-1.png" width="60%" style="display: block; margin: auto;" /> --- ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_grid(. ~ species) ``` <img src="index_files/figure-html/unnamed-chunk-45-1.png" width="60%" style="display: block; margin: auto;" /> --- ```r ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + * facet_wrap(~ species, ncol = 2) ``` <img src="index_files/figure-html/unnamed-chunk-46-1.png" width="60%" style="display: block; margin: auto;" /> --- ## Resumo Faceting - `facet_grid()`: - Grid em duas dimensões - `rows ~ cols` - use `.` para não separar - `facet_wrap()`: Representação em uma dimensão de acordo com o número de linhas e colunas especificadas ou com a área de plotagem disponível --- ## Facet e cores .pull-left-narrow[ ```r ggplot( penguins, aes(x = bill_depth_mm, y = bill_length_mm, * color = species)) + geom_point() + facet_grid(species ~ sex) + * scale_color_viridis_d() ``` ] .pull-right-wide[ <img src="index_files/figure-html/unnamed-chunk-47-1.png" width="100%" style="display: block; margin: auto;" /> ] --- ## Facet e cor, sem legenda .pull-left-narrow[ ```r ggplot( penguins, aes(x = bill_depth_mm, y = bill_length_mm, color = species)) + geom_point() + facet_grid(species ~ sex) + scale_color_viridis_d() + * guides(color = FALSE) ``` ] .pull-right-wide[ <img src="index_files/figure-html/unnamed-chunk-48-1.png" width="100%" style="display: block; margin: auto;" /> ]