class: center, middle, inverse, title-slide .title[ # Visualizando - ggplot2 ] .author[ ###
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 --- # Instalação de pacotes para o encontro de hoje! #### Pelo github ```r devtools::install_github("rstudio-education/dsbox") devtools::install_github("gadenbuie/xaringanExtra") ``` #### Outros ```r install.packages("remedy") install.packages("tidyverse") install.packages("palmerpenguins") install_packages("flexdashboard", "xaringan", "xaringanthemer") ``` --- ## Modelo conceitual da análise de dados  --- ## Estrutura da linguagem R - As funções são (na maioria das vezes) verbos, seguidos pelo objeto a que serão aplicados entre parênteses: ```r do_this(to_this) do_that(to_this, to_that, with_those) ``` -- - Os pacotes são instalados com a função `install.packages` e carregados com a função `library`, uma vez por sessão: ```r install.packages("package_name") library(package_name) ``` --- ## Funções essenciais (continuação) - apresenta as seis primeiras linhas do banco de dados ```r head(mtcars) ``` ``` ## mpg cyl disp hp drat wt qsec vs am gear ## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 ## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 ## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 ## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 ## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 ## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 ## carb ## Mazda RX4 4 ## Mazda RX4 Wag 4 ## Datsun 710 1 ## Hornet 4 Drive 1 ## Hornet Sportabout 2 ## Valiant 1 ``` --- - mostra os tipos de variáveis e a estrutura do dado ```r str(mtcars) ``` ``` ## 'data.frame': 32 obs. of 11 variables: ## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... ## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ... ## $ disp: num 160 160 108 258 360 ... ## $ hp : num 110 110 93 110 175 105 245 62 95 123 ... ## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... ## $ wt : num 2.62 2.88 2.32 3.21 3.44 ... ## $ qsec: num 16.5 17 18.6 19.4 17 ... ## $ vs : num 0 0 1 1 0 1 0 1 1 1 ... ## $ am : num 1 1 1 0 0 0 0 0 0 0 ... ## $ gear: num 4 4 4 3 3 3 3 4 4 4 ... ## $ carb: num 4 4 1 1 2 1 4 2 2 4 ... ``` --- - mostra a classe da base de dados ```r class(mtcars) ``` ``` ## [1] "data.frame" ``` -- - mostra a dimensão do objeto ```r dim(mtcars) ``` ``` ## [1] 32 11 ``` -- - mostra os nomes das variáveis (colunas) ```r names(mtcars) ``` ``` ## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" ## [9] "am" "gear" "carb" ``` --- - A função `c()` permite a construção de vetores por meio alocação de valores em posições distintas de vetores. ```r v1 <- c("pato", "sapo", "pato", "gato", "pato") ``` -- - As colunas (variáveis) em dataframes são acessadas com `$`: ```r dataframe$var_name ``` --- ## Tipos de dados <img src="img/continuous_discrete.png" width="60%" style="display: block; margin: auto;" /> --- ## Tipos de dados <img src="img/nominal_ordinal_binary.png" width="60%" style="display: block; margin: auto;" /> --- ## Tipos de dados - Os tipos de dados mais comuns são `character`, `numeric`, `factor`e `logical`. Character ```r character <- "arroz" class(character) ``` ``` ## [1] "character" ``` Numeric ```r numeric <- 7 class(numeric) ``` ``` ## [1] "numeric" ``` --- ## Tipos de dados Factor ```r factor <- as.factor(c("pato", "gato", "rato", "gato", "pato")) class(factor) ``` ``` ## [1] "factor" ``` ```r levels(factor) ``` ``` ## [1] "gato" "pato" "rato" ``` --- ## Tipos de dados Logical ```r logical <- as.logical(c(0,1,1,0)) class(logical) ``` ``` ## [1] "logical" ``` --- ## Tipos de classes de objetos no R - As classes de organização dos dados mais comuns são `vector`, `list`, `matrix` e `dataframe`. .question[ Um vetor é uma seqüência de elementos de dados do mesmo tipo básico. Os elementos em um vetor são oficialmente chamados de componentes. No entanto, nós os chamaremos apenas de elementos e assumiremos que cada elemento ocupa uma posição no vetor. ] --- ## Tipos de classes de objetos no R #### Índice em vetores: ```r s <- c("aa", "bb", "cc", "dd", "ee") s[3] ``` ``` ## [1] "cc" ``` ```r s[-3] ``` ``` ## [1] "aa" "bb" "dd" "ee" ``` ```r s[10] ``` ``` ## [1] NA ``` --- ## Tipos de classes de objetos no R .question[ Uma matriz é uma coleção de elementos de dados dispostos em um layout bidimensional retangular. A seguir, um exemplo de uma matriz com 2 filas e 3 colunas.] --- ## Tipos de classes de objetos no R ```r A = matrix(c(2, 4, 3, 1, 5, 7), # the data elements nrow=2, # number of rows ncol=3, # number of columns byrow = TRUE) # fill matrix by rows A ``` ``` ## [,1] [,2] [,3] ## [1,] 2 4 3 ## [2,] 1 5 7 ``` ```r A[2, 3] ``` ``` ## [1] 7 ``` --- ## Tipos de classes de objetos no R .question[ Uma lista é um vetor genérico que contém diferentes tipos de objetos. ] ```r n <- c(2, 3, 5) s <- c("aa", "bb", "cc", "dd", "ee") x <- list(n, s, 3) # x contains copies of n, s, b x ``` ``` ## [[1]] ## [1] 2 3 5 ## ## [[2]] ## [1] "aa" "bb" "cc" "dd" "ee" ## ## [[3]] ## [1] 3 ``` --- ## Tipos de classes de objetos no R ```r slice <- x[2] slice ``` ``` ## [[1]] ## [1] "aa" "bb" "cc" "dd" "ee" ``` ```r x[[2]] # member - can be modified ``` ``` ## [1] "aa" "bb" "cc" "dd" "ee" ``` --- ## Tipos de classes de objetos no R .question[ Um `dataframe` é usado para armazenar tabelas de dados. É uma lista de vetores de igual comprimento. Por exemplo, a seguinte variável `df` é uma `dataframe` contendo três vetores n, s, b. ] ```r n <- c(2, 3, 5) s <- c("aa", "bb", "cc") b <- c(TRUE, FALSE, TRUE) df <- data.frame(n, s, b) # df is a data frame df ``` ``` ## n s b ## 1 2 aa TRUE ## 2 3 bb FALSE ## 3 5 cc TRUE ``` --- ## 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: center, middle # Atividades extra de RMarkdown --- ### Fazendo uma apresentação no R! 1. Instale os pacotes install.packages(c("xaringan", "xaringanExtra", "xaringanthemer")) 2. Gere um arquivo R markdown do tipo Ninja Xaringan Themer. 3. `knit` o documento. 4. Visite o site [color-hex](https://www.color-hex.com/) e altere o padrão de cores da apresentação. --- ### Outra exploração (individualmente) 1. Instale o package `flexdashboard` (install.packages("flexdashboard")) 2. Gere um documento desse tipo no RStudio. 3. Inclua dados e representações simples. Pode utilizar o `mtcars` e as funções `plot()`, `hist()` e `boxplot()` 4. Gere um `summary()` de algum dos vetores que compõe o dataframe. --- class: middle # O que é um conjunto de dados? --- ## Terminologia - Cada linha é uma **observação** - Cada coluna é uma **variável** ```r library(tidyverse) starwars ``` ``` ## # A tibble: 87 × 14 ## name height mass hair_…¹ skin_…² eye_c…³ birth…⁴ sex gender ## <chr> <int> <dbl> <chr> <chr> <chr> <dbl> <chr> <chr> ## 1 Luke… 172 77 blond fair blue 19 male mascu… ## 2 C-3PO 167 75 <NA> gold yellow 112 none mascu… ## 3 R2-D2 96 32 <NA> white,… red 33 none mascu… ## 4 Dart… 202 136 none white yellow 41.9 male mascu… ## 5 Leia… 150 49 brown light brown 19 fema… femin… ## 6 Owen… 178 120 brown,… light blue 52 male mascu… ## # … with 81 more rows, 5 more variables: homeworld <chr>, ## # species <chr>, films <list>, vehicles <list>, ## # starships <list>, and abbreviated variable names ## # ¹hair_color, ²skin_color, ³eye_color, ⁴birth_year ``` --- ## Luke Skywalker  ## 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-30-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[ - O ggplot2*** é 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 × 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-37-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-38-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) 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-43-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-44-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-45-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-46-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-47-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-48-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-49-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-50-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-51-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-52-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-53-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-54-1.png" width="100%" style="display: block; margin: auto;" /> ] --- .panelset[ .panel[.panel-name[Plot] <img src="index_files/figure-html/unnamed-chunk-55-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-56-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-57-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-58-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-59-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-60-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-61-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-62-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-63-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-64-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-65-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-66-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-67-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-68-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-69-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-70-1.png" width="100%" style="display: block; margin: auto;" /> ] --- class: middle # Visualização de dados - agora é com vocês!
−
+
20
:
00
--- class: middle, inverse # Como abrir arquivos .csv e .xlsx no R --- # Principais comandos ```r getwd() ``` ``` ## [1] "D:/OneDrive - cefetmg.br/01_disciplinas/2022_2/introR/01_aulas/2022/class02" ``` ```r setwd("C:\\User\\Documents") ``` ```r library(tidyverse) dados <- read_csv(file1) ``` ```r library(readxl) transporte <- read_excel(arquivo, "Variáveis externas") ``` --- class: middle # Atividades em classe
−
+
20
:
00
--- # Atividades 1. Xaringan e Xaringan Themer 2. Atividade 3 e Tutoriais 1 e 2 --- class: inverse, center, middle # DÚVIDAS?