class: center, middle, inverse, title-slide # Visualização de Dados com o R
## 14ª aMostra Estatística 2019
###
R-Ladies São Paulo ### 19/09/2019 --- layout: true <div class="my-footer"><span> <a href="https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo">Meetup</a> | <a href="https://twitter.com/RLadiesSaoPaulo">Twitter</a> | <a href="http://instagram.com/RLadiesSaoPaulo">Instagram</a> | <a href="http://facebook.com/RLadiesSaoPaulo">Facebook</a> | <a href="https://github.com/rladies/meetup-presentations_sao-paulo">Github</a> | <a href="http://bit.ly/datavizR">bit.ly/datavizR</a> | <a href="http://bit.ly/datavizR-open">bit.ly/datavizR-open</a> </span></div> <!-- programação --> --- class: middle # Programação - R-Ladies - Ciclo da Ciência de Dados - Visualização de Dados - Aplicações -- ... muitas <!-- R-Ladies --> --- class: center <div class="figure" style="text-align: center"> <img src="img/hexlogorladies.jpeg" alt="<center><b> </center></b>" width="18%" /> <p class="caption"><center><b> </center></b></p> </div> - R-Ladies é uma organização mundial que **promove a diversidade de gênero** na comunidade R. -- - R-Ladies São Paulo integra, orgulhosamente, a organização R-Ladies Global, em São Paulo. -- - [Código de conduta - R-Ladies](https://github.com/rladies/starter-kit/wiki/Code-of-Conduct#portuguese) -- - Saiba mais: - RLadies Global: [https://rladies.org/](https://rladies.org/) - MeetUp: [https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo](https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo) - Twitter: [@RLadiesGlobal](https://twitter.com/rladiesglobal), [@RLadiesSaoPaulo](https://twitter.com/RLadiesSaoPaulo) - Instagram: [@RLadiesSaoPaulo](http://instagram.com/RLadiesSaoPaulo) - Facebook: [@RLadiesSaoPaulo](http://facebook.com/RLadiesSaoPaulo) - Github: [https://github.com/rladies/meetup-presentations_sao-paulo](https://github.com/rladies/meetup-presentations_sao-paulo) <!-- R-Ladies + Geo + Nath --> --- class: middle <div class="figure" style="text-align: center"> <img src="img/R-Ladies/GeovanaLopes.jpg" alt="<center><b> </center></b>" width="15%" /> <p class="caption"><center><b> </center></b></p> </div> **<a href='https://www.linkedin.com/in/geovanalopes/'> Geovana Lopes </a>** é formada em Matemática, tem como hobby o jiu jitsu, além de ser a louca dos livros e mãe de dois gatos. Atualmente é Cientista de Dados na AlmapBBDO e cursa o bacharelado em estatística no IME-USP. Já atuou como professora de matemática na rede pública de São Paulo e também passou pelo departamento de estatística da Secretaria de Segurança Pública do Estado de São Paulo. ____ <div class="figure" style="text-align: center"> <img src="img/R-Ladies/NathaliaDemetrio.jpg" alt="<center><b> </center></b>" width="15%" /> <p class="caption"><center><b> </center></b></p> </div> **<a href='https://www.linkedin.com/in/nathaliademetrio/'> Nathália Demetrio </a>** é bacharel em estatística pela UFPE e mestre pela USP, tem experiência em pesquisa de mídia, pela Kantar IBOPE Media, e insights 'go to market', pela VIVO, atualmente é Growth Manager na Cabify. No mais? Mãe do Guga, Conselheira eleita no Conselho Regional de Estatística (CONRE-3), viciada em brigadeiro, filmes e filosofia, e participante ativa de meio mundo de pauta. Quer ajudar em alguma? Please let me know :) <!-- R --> --- class: center <div class="figure" style="text-align: center"> <img src="img/R_logo.svg.png" alt="<center><b> </center></b>" width="25%" /> <p class="caption"><center><b> </center></b></p> </div> - O R é uma linguagem de programação, além de um ambiente de software gratuito. -- - oferece um vasto leque de funcionalidades acessíveis via instalação de bibliotecas. -- - o R possui uma comunidade extremamente ativa, engajada desde o aprimoramento da ferramenta e desenvolvimento de novas bibliotecas, até o suporte aos usuários. -- - Saiba mais em: [r-project.org](https://www.r-project.org/about.html) <!-- ciclo de ciência de dados sem R --> --- class: middle # O Ciclo da Ciência de Dados <div class="figure" style="text-align: center"> <img src="img/allisonhorst/data-analysis_withoutR.png" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> - (adaptado de Wickham & Grolemund, 2017</b></center>" width="70%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> - (adaptado de Wickham & Grolemund, 2017</b></center></p> </div> <!-- ciclo de ciência de dados com R --> --- class: middle # O Ciclo da Ciência de Dados <div class="figure" style="text-align: center"> <img src="img/allisonhorst/data-analysis_withR.png" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> - (adaptado de Wickham & Grolemund, 2017</b></center>" width="70%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> - (adaptado de Wickham & Grolemund, 2017</b></center></p> </div> <!-- communication 1 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_1.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 2 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_2.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 3 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_3.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 4 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_4.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 5 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_5.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 6 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_6_oQueFalar.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 7 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_7.png" alt="<center><b>Fonte: <a href='https://www.data-to-viz.com/'> Data to Viz</a> </b></center>" width="70%" /> <p class="caption"><center><b>Fonte: <a href='https://www.data-to-viz.com/'> Data to Viz</a> </b></center></p> </div> <!-- comunicação 8 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_8_comoFalar.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 9 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_9_escalaVariavel.png" alt="<center><b> </center></b>" width="60%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 10 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_10_qualMensagem.png" alt="<center><b> </center></b>" width="90%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- comunicação 11 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_11_GrammarGraphics.png" alt="<center><b> </center></b>" width="80%" /> <p class="caption"><center><b> </center></b></p> </div> <!-- introdução ggplot --> --- class: middle # Visualização de Dados + R = ggplot2 <div class="figure" style="text-align: center"> <img src="img/allisonhorst/ggplot2_obra_prima_pt.png" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center>" width="50%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center></p> </div> <!-- package ggplot --> --- class: center <div class="figure" style="text-align: center"> <img src="img/rlogos/hex-ggplot2.png" alt="<center><b> </center></b>" width="20%" /> <p class="caption"><center><b> </center></b></p> </div> - Faz com o mapeamento modular dos dados, seguindo uma lógica de camadas, similarmente ao encadeamento do Pipe (`%>%`) - porém utilizando o operador + -- - Desenvolvida por [Hadley Wickham](http://hadley.nz/) durante a sua tese de doutorado, na Universidade de Iowa -- - Inspirada no livro "The Grammar of Graphics" do Leland Wilkinson (1999) (daí o `gg` do `ggplot2`]. -- - Mantido pela [RStudio](https://rstudio.com/) <!-- grammar of graphics + ggplot2 --> --- class: middle # Visualização de Dados <div class="figure" style="text-align: center"> <img src="img/communication/communication_11_GrammarGraphicsGgplot_0.png" alt="<center><b>Fonte: <a href='http://sape.inf.usi.ch/quick-reference/ggplot2'> sape research group </a></b></center>" width="90%" /> <p class="caption"><center><b>Fonte: <a href='http://sape.inf.usi.ch/quick-reference/ggplot2'> sape research group </a></b></center></p> </div> <!-- grammar of graphics + ggplot2 --> --- class: middle # Visualização de Dados + R = ggplot2 <div class="figure" style="text-align: center"> <img src="img/communication/communication_11_GrammarGraphicsGgplot.png" alt="<center><b>Fonte: <a href='http://sape.inf.usi.ch/quick-reference/ggplot2'> sape research group </a></b></center>" width="90%" /> <p class="caption"><center><b>Fonte: <a href='http://sape.inf.usi.ch/quick-reference/ggplot2'> sape research group </a></b></center></p> </div> <!-- sintaxe básica do ggplot --> --- class: middle # Sintaxe Básica do ggplot2 ```r ggplot(data, aesthetics) + geometries() ``` <img src="img/communication/communication_11_GrammarGraphicsGgplot_sintaxe.png" width="80%" style="display: block; margin: auto;" /> --- class: middle # Sintaxe Básica do ggplot2 ```r ggplot(data, aesthetics) + geometries(statistics) + facets + coordinates + theme ``` <img src="img/communication/communication_11_GrammarGraphicsGgplot_sintaxe-2.png" width="80%" style="display: block; margin: auto;" /> <!-- sintaxe básica do ggplot-1 --> --- class: middle # Sintaxe Básica do ggplot2 ```r #Conjunto de bibliotecas para ciência de dados install.packages("tidyverse") library(tidyverse) ``` ```r dados <- tibble(var_x = 1:4, var_y = seq(2,8,2), var_grupo = c(rep("a", 3),"b")) summary(dados) #> var_x var_y var_grupo #> Min. :1.00 Min. :2.0 Length:4 #> 1st Qu.:1.75 1st Qu.:3.5 Class :character #> Median :2.50 Median :5.0 Mode :character #> Mean :2.50 Mean :5.0 #> 3rd Qu.:3.25 3rd Qu.:6.5 #> Max. :4.00 Max. :8.0 ``` --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-0-1.png) ] --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-1-1.png) ] --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y)) + geom_point() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-2-1.png) ] <!-- sintaxe básica do ggplot-1-4 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados) + geom_point(aes(x = var_x, y = var_y)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-4-1.png) ] <!-- sintaxe básica do ggplot ggplot-1-5 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados) + geom_point(aes(x = var_x, y = var_y, color = var_grupo)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-5-1.png) ] <!-- sintaxe básica do ggplot-1-6 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y)) + geom_point(aes(color = var_grupo)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-6-1.png) ] <!-- sintaxe básica do ggplot-1-6-1 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo)) + geom_point() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-6-1-1.png) ] <!-- sintaxe básica do ggplot-1-7 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo)) + geom_point() + facet_grid(.~var_grupo) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-7-1.png) ] <!-- sintaxe básica do ggplot-1-8 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo)) + geom_label(aes(label=var_x)) + facet_grid(.~var_grupo) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-8-1.png) ] <!-- sintaxe básica do ggplot-1-9 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo, label = var_x)) + geom_point() + geom_label() + facet_grid(.~var_grupo) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-9-1.png) ] <!-- sintaxe básica do ggplot-1-10 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo, label = var_x)) + geom_point() + geom_label() + facet_grid(.~var_grupo) + theme_dark() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-10-1.png) ] <!-- sintaxe básica do ggplot-1-11 --> --- class: middle # Sintaxe Básica do ggplot2 .left-code[ ```r #exemplo p <- ggplot(dados, aes(x = var_x, y = var_y, color = var_grupo, label = var_x)) + geom_point() + geom_label() + facet_grid(.~var_grupo) + theme_dark() p + facet_grid(var_grupo~.) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-ggplot-1-11-1.png) ] <!-- aplicações --> --- class: middle # Aplicações <div class="figure" style="text-align: center"> <img src="img/allisonhorst/ggplot2_visual.jpg" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center>" width="45%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center></p> </div> <!-- Base de Dados Cars93 --> --- class: middle # Base de Dados Cars93 ```r #Conjunto de bibliotecas para ciência de dados install.packages("tidyverse") library(tidyverse) #Pacote que contém base de dados Cars93 install.packages("MASS") library(MASS) ``` ```r df <- Cars93 %>% select(Horsepower, Type, AirBags) glimpse(df) #> Observations: 93 #> Variables: 3 #> $ Horsepower <int> 140, 200, 172, 172, 208, 110, 170, 180, 170, 200, 2... #> $ Type <fct> Small, Midsize, Compact, Midsize, Midsize, Midsize,... #> $ AirBags <fct> None, Driver & Passenger, Driver only, Driver & Pas... ``` <!-- Base de Dados Cars93 + Histogram--> --- class: middle # Base de Dados Cars93 .left-code[ ```r ggplot(df, aes(x = Horsepower)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist1.1-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist2-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram(binwidth = 10) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist3-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram(binwidth = 10, color = "black", fill = "darkorchid4") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist3.1-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram(binwidth = 10, color = "black", fill = "darkorchid4") + theme_bw() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist4-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram(binwidth = 10, color = "black", fill = "darkorchid4") + theme_bw() + labs(x = "Nome eixo x", y = "Nome eiixo y", title = "Título", subtitle = "Subtítulo", caption="Fonte de Dados") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist4.1-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma .left-code[ ```r ggplot(df, aes(x = Horsepower)) + geom_histogram(bins = 10, color = "black", fill = "darkorchid4") + theme_bw() + labs(x = "Frequencia", y = "Horsepower", title = "Potencia") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-hist5-1.png) ] --- class: middle # Base de Dados Cars93 + Histograma ## Exercício Criar um histograma a partir de alguma variável da base Cars93, com no máximo 5 barras, com título, subtítulo e nome dos eixos x e y. <!-- Base de Dados Cars93 + Gráfico de Barras--> --- class: middle # Base de Dados Cars93 .left-code[ ```r ggplot(df, aes(x = Type)) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar1-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type)) + geom_bar() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar2-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type)) + geom_bar(fill = "darkorchid4") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar3-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type)) + geom_bar(fill = "darkorchid4") + labs(x = "Tipo de carro", y = "Contagem", title = "Tipo de carro") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar5-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type)) + geom_bar(fill = "darkorchid4") + labs(x = "Tipo de carro", y = "Contagem", title = "Tipo de carro") + theme_minimal() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar5.1-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type)) + geom_bar(fill = "darkorchid4") + labs(x = "Tipo de carro", y = "Contagem", title = "Tipo de carro") + theme_minimal() + facet_grid( ~ AirBags) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar6-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type, fill = AirBags)) + geom_bar(position = "dodge", color = "black") + theme_minimal() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar7-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type, fill = AirBags)) + geom_bar(position = "dodge", color = "black") + theme_minimal() + scale_fill_brewer(palette = "Purples", direction = 1) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar7.1-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type, fill = AirBags)) + geom_bar(position = "fill", color = "black") + theme_minimal() + scale_fill_brewer(palette = "Purples", direction = 1) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar8-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type, fill = AirBags)) + geom_bar(position = "stack", color = "black") + theme_minimal() + scale_fill_brewer(palette = "Purples", direction = 1) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar9-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras .left-code[ ```r ggplot(df, aes(x = Type, fill = AirBags)) + geom_bar(position = "stack", color = "black") + theme_minimal() + scale_fill_brewer(palette = "Purples", direction = 1) + coord_flip() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bar10-1.png) ] --- class: middle # Base de Dados Cars93 + Gráfico de Barras ## Exercício Criar um gráfico de barras, usando umas das opções 'position' (fill, dodge ou stack), alterando o 'theme' e inserindo título, subtítulo e nomes dos eixos x e y. <!-- Base de Dados HairEyeColor + boxplot --> --- class: middle # Base de Dados HairEyeColor ```r #Conjunto de bibliotecas para ciência de dados install.packages("tidyverse") library(tidyverse) ``` ```r dfhair <- data.frame(HairEyeColor) glimpse(dfhair) #> Observations: 32 #> Variables: 4 #> $ Hair <fct> Black, Brown, Red, Blond, Black, Brown, Red, Blond, Black... #> $ Eye <fct> Brown, Brown, Brown, Brown, Blue, Blue, Blue, Blue, Hazel... #> $ Sex <fct> Male, Male, Male, Male, Male, Male, Male, Male, Male, Mal... #> $ Freq <dbl> 32, 53, 10, 3, 11, 50, 10, 30, 10, 25, 7, 5, 3, 15, 7, 8,... ``` --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, fill = Sex)) + theme_minimal() + geom_boxplot() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt2-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, color = Sex)) + theme_minimal() + geom_boxplot() + scale_x_discrete(labels = c("Homem", "Mulher")) + xlab("Sexo") + ylab("Frequencia") + scale_color_manual(values = c("darkorchid4", "brown2")) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt2.1-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, color = Sex)) + theme_minimal() + geom_boxplot( outlier.colour = "black", outlier.shape = 8, outlier.size = 4 ) + scale_x_discrete(labels = c("Homem", "Mulher")) + xlab("Sexo") + ylab("Frequencia") + scale_color_manual(values = c("darkorchid4", "brown2")) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt3-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, color = Sex)) + theme_minimal() + geom_boxplot() + geom_dotplot( binaxis = 'y', stackdir = 'center', dotsize = 1, binwidth = 2 ) + scale_x_discrete(labels = c("Homem", "Mulher")) + xlab("Sexo") + ylab("Frequencia") + scale_color_manual(values = c("darkorchid4", "brown2")) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt4-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, color = Sex)) + theme_minimal() + geom_boxplot( outlier.colour = "black", outlier.shape = 8, outlier.size = 4 ) + scale_x_discrete(labels = c("Homem", "Mulher")) + labs( title = "Boxplot", x = "Sexo", y = "Frequência", subtitle = "HairEyeColor" ) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt6-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot .left-code[ ```r ggplot(dfhair, aes(x = as.factor(Sex), y = Freq, fill = Sex)) + theme_minimal() + geom_boxplot( outlier.colour = "black", outlier.shape = 8, outlier.size = 4 ) + scale_x_discrete(labels = c("Homem", "Mulher")) + labs( title = "Boxplot", x = "Sexo", y = "Frequência", subtitle = "HairEyeColor" ) + scale_fill_manual(values = c("darkorchid4", "brown2")) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-bpt7-1.png) ] --- class: middle # Base de Dados HairEyeColor + Boxplot ## Exercício Criar um boxplot a partir da base de dados 'hairEyeColor', alterando a cor, evidenciando outliers quando houver e inserindo título, subtítulo e nomes dos eixos x e y. <!-- Base de Dados mtcars + gráf dispersão --> --- class: middle ```r #Conjunto de bibliotecas para ciência de dados install.packages("tidyverse"); library(tidyverse) ``` # Base de Dados mtcars ```r data(mtcars) glimpse(mtcars) #> Observations: 32 #> Variables: 11 #> $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.... #> $ cyl <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, ... #> $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1... #> $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ... #> $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9... #> $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3... #> $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2... #> $ vs <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, ... #> $ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, ... #> $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, ... #> $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, ... ``` --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp1-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp2-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point(aes(size = drat)) + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp3-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat, colour = cyl)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados", colour="Cilindros") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp4-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") + geom_vline(xintercept = 20, col="red") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp5-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") + geom_hline(yintercept = 4, col="red") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp6-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") + geom_vline(xintercept = 10:15, col="red") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp7-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") + geom_smooth(method = "lm", se = FALSE, col="red") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp8-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão .left-code[ ```r ggplot(mtcars, aes(mpg, drat)) + geom_point() + theme_classic() + labs( title = "Meu gráfico :)", subtitle = "Gráfico de Dispersão", x = "MPG", y = "Drat", caption = "Fonte de dados") + geom_smooth(method = "lm", se = TRUE, col="red") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-disp9-1.png) ] --- class: middle # Base de Dados mtcars + Gráfico de Dispersão ## Exercício Criar um gráfico de dispersão a partir da base 'mtcars' e usando o geom_smooth <!-- Base de Dados XXX + Series Temporais--> --- class: middle # Base de Dados Ações ```r #Pacote que extrai dados do mercado de ações install.packages("BatchGetSymbols") library(BatchGetSymbols) ``` ```r #Definindo ações para extração de dados empresas <- c('PETR4.SA', 'CIEL3.SA') #Definindo a minha série de tempo first.date <- Sys.Date()-90 last.date <- Sys.Date() #Inserindo os paramentros para extrair o meu dataframe temp <- BatchGetSymbols(tickers = empresas, first.date = first.date, last.date = last.date, do.cache=FALSE) ``` --- class: middle # Base de Dados Ações ```r meudataset <- temp$df.tickers glimpse(meudataset) #> Observations: 126 #> Variables: 10 #> $ price.open <dbl> 27.95, 28.32, 28.14, 27.55, 27.44, 27.45, ... #> $ price.high <dbl> 28.39, 28.38, 28.16, 27.93, 27.55, 27.61, ... #> $ price.low <dbl> 27.95, 28.12, 27.38, 27.52, 27.01, 27.11, ... #> $ price.close <dbl> 28.28, 28.25, 27.51, 27.67, 27.23, 27.41, ... #> $ volume <dbl> 58424700, 27365000, 56472100, 48901500, 55... #> $ price.adjusted <dbl> 28.05949, 28.02973, 27.29550, 27.45425, 27... #> $ ref.date <date> 2019-06-21, 2019-06-24, 2019-06-25, 2019-... #> $ ticker <chr> "PETR4.SA", "PETR4.SA", "PETR4.SA", "PETR4... #> $ ret.adjusted.prices <dbl> NA, -0.0010608174, -0.0261946887, 0.005816... #> $ ret.closing.prices <dbl> NA, -0.0010608557, -0.0261946903, 0.005816... ``` --- class: middle # Base de Dados Ações + Series Temporais .left-code[ ```r ggplot(meudataset, aes(x = ref.date, y = volume)) + geom_line() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-st1-1.png) ] --- class: middle # Base de Dados Ações + Series Temporais .left-code[ ```r ggplot(meudataset, aes(x = ref.date, y = volume, color = ticker)) + geom_line() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-st2-1.png) ] --- class: middle # Base de Dados Ações + Series Temporais .left-code[ ```r ggplot(meudataset, aes(x = ref.date, y = volume, color = ticker)) + geom_line() + labs( title = "Série Temporal", subtitle = "Ações", x = "Data", y = "Volume de Ações", caption = "Fonte: Bovespa" ) + theme_minimal() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-st3-1.png) ] --- class: middle # Base de Dados Ações + Series Temporais .left-code[ ```r ggplot(meudataset, aes(x = ref.date, y = volume, color = ticker)) + geom_line() + labs( title = "Série Temporal", subtitle = "Ações", x = "Data", y = "Volume de Ações", caption = "Fonte: Bovespa" ) + theme(legend.position = "bottom") + scale_x_date(date_breaks = "2 week") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-st4-1.png) ] --- class: middle # Base de Dados Ações + Series Temporais ## Exercício Criar um gráfico a partir da série dos dados extraídos do mercado de ações e dividindo o eixo x em intervalos de 1 mês. <!-- Base de Dados XXX + Heatmap --> --- class: middle # Base de Dados Happy ```r #Extensão do ggplot2 para análises de correlação e base happy install.packages("GGally"); library(GGally) #Pacote com paleta de cores otimizada install.packages("viridis"); library(viridis) ``` ```r glimpse(happy) #> Observations: 51,020 #> Variables: 10 #> $ id <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... #> $ happy <fct> not too happy, not too happy, pretty happy, not too ha... #> $ year <dbl> 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, ... #> $ age <dbl> 23, 70, 48, 27, 61, 26, 28, 27, 21, 30, 30, 56, 54, 49... #> $ sex <fct> female, male, female, female, female, male, male, male... #> $ marital <fct> never married, married, married, married, married, nev... #> $ degree <fct> bachelor, lt high school, high school, bachelor, high ... #> $ finrela <fct> average, above average, average, average, above averag... #> $ health <fct> good, fair, excellent, good, good, good, excellent, go... #> $ wtssall <dbl> 0.4446, 0.8893, 0.8893, 0.8893, 0.8893, 0.4446, 0.4446... ``` --- class: middle # Base de Dados Happy + Heatmap .left-code[ ```r happy %>% count(age, year) %>% ggplot(aes(age, year, fill = n)) + geom_tile() + scale_fill_viridis() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-heatmap1-1.png) ] --- class: middle # Base de Dados Happy + Heatmap .left-code[ ```r happy %>% count(age, year) %>% group_by(year) %>% mutate(total = sum(n), prop = n / total) %>% ggplot(aes(age, year, fill = prop)) + geom_tile() + scale_fill_viridis() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-heatmap2-1.png) ] --- class: middle # Base de Dados Happy + Heatmap .left-code[ ```r happy %>% drop_na(happy) %>% count(age, year, happy) %>% group_by(year, happy) %>% mutate(total = sum(n), prop = n / total) %>% ggplot(aes(age, year, fill = prop)) + geom_tile() + scale_fill_viridis() + facet_grid(.~happy) ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-heatmap3-1.png) ] <!-- mtcars + Correlagrama --> --- class: middle # Voltando ao mtcars ```r skim_with(numeric = list(complete = NULL, hist = NULL)) skim(mtcars) #> Skim summary statistics #> n obs: 32 #> n variables: 11 #> #> -- Variable type:numeric ------------------------------------------------------------------------------------------------------------------------------------- #> variable missing n mean sd p0 p25 p50 p75 p100 #> am 0 32 0.41 0.5 0 0 0 1 1 #> carb 0 32 2.81 1.62 1 2 2 4 8 #> cyl 0 32 6.19 1.79 4 4 6 8 8 #> disp 0 32 230.72 123.94 71.1 120.83 196.3 326 472 #> drat 0 32 3.6 0.53 2.76 3.08 3.7 3.92 4.93 #> gear 0 32 3.69 0.74 3 3 4 4 5 #> hp 0 32 146.69 68.56 52 96.5 123 180 335 #> mpg 0 32 20.09 6.03 10.4 15.43 19.2 22.8 33.9 #> qsec 0 32 17.85 1.79 14.5 16.89 17.71 18.9 22.9 #> vs 0 32 0.44 0.5 0 0 0 1 1 #> wt 0 32 3.22 0.98 1.51 2.58 3.33 3.61 5.42 ``` --- class: middle # Base de Dados mtcars + Correlagrama .left-code[ ```r library(corrplot) m <- cor(mtcars) corrplot(m,method="circle") corrplot(m, method = "color", addCoef.col = "black") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-corr-1.png) ] --- class: middle # Base de Dados mtcars + Correlagrama .left-code[ ```r corrplot(m, method = "color", addCoef.col = "black") ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-corr0-1.png) ] <!-- Base de Dados mtcars + ggpairs --> --- class: middle # Base de Dados mtcars + Matriz de gráficos .left-code[ ```r mtcars %>% ggpairs() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-corr1-1.png) ] --- class: middle # Base de Dados mtcars + Matriz de gráficos .left-code[ ```r mtcars %>% select(drat:am) %>% ggpairs() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-corr2-1.png) ] --- class: middle # Base de Dados mtcars + Matriz de gráficos .left-code[ ```r mtcars %>% select(drat:am) %>% mutate_at(c("vs", "am"), as_factor) %>% ggpairs() ``` ] .right-plot[ ![](index_files/figure-html/plot-exemplo-corr3-1.png) ] <!-- Base de Dados diamonds + plotly --> --- class: middle # Base de Dados Diamonds ```r #Extensão do ggplot2 para análises de correlação e base happy install.packages("plotly"); library(plotly) ``` ```r set.seed(100) d <- diamonds %>% filter(cut %in% c("Very Good", "Premium", "Ideal")) %>% sample_frac(0.05) d %>% glimpse #> Observations: 2,371 #> Variables: 10 #> $ carat <dbl> 1.51, 0.90, 0.33, 0.30, 1.08, 0.41, 0.64, 1.74, 0.73, ... #> $ cut <ord> Very Good, Very Good, Premium, Ideal, Very Good, Ideal... #> $ color <ord> J, G, E, H, H, H, G, G, I, F, D, G, G, I, E, G, F, D, ... #> $ clarity <ord> VS1, SI1, VS2, VVS1, VS2, SI1, VS1, VS2, VS1, VVS2, SI... #> $ depth <dbl> 61.2, 63.4, 62.0, 61.8, 62.9, 62.4, 62.3, 61.0, 61.2, ... #> $ table <dbl> 63.0, 54.0, 59.0, 55.0, 59.0, 53.0, 54.0, 58.0, 59.0, ... #> $ price <int> 8524, 3615, 928, 665, 5515, 722, 2155, 17614, 2371, 55... #> $ x <dbl> 7.31, 6.11, 4.41, 4.34, 6.47, 4.78, 5.54, 7.77, 5.82, ... #> $ y <dbl> 7.24, 6.16, 4.39, 4.37, 6.56, 4.81, 5.56, 7.75, 5.84, ... #> $ z <dbl> 4.45, 3.89, 2.73, 2.69, 4.10, 2.99, 3.46, 4.73, 3.57, ... ``` --- class: middle # Base de Dados Diamonds + plotly ```r p <- ggplot(d, aes(x = carat, y = price)) + geom_point(aes(text = paste("Clarity:", clarity)), size = 4) + geom_smooth(aes(colour = cut, fill = cut)) + facet_grid(.~cut) ggplotly(p) ```
<!-- ggplot-cheatSheet --> --- class: middle # Referência top <div class="figure" style="text-align: center"> <img src="img/ggplot-cheatSheet-pt1.png" alt="<center><b>RStudio CheatSheets: <a href='https://www.rstudio.com/resources/cheatsheets'> ggplot2 </a> </b></center>" width="60%" /> <p class="caption"><center><b>RStudio CheatSheets: <a href='https://www.rstudio.com/resources/cheatsheets'> ggplot2 </a> </b></center></p> </div> --- class: middle # Referência top <div class="figure" style="text-align: center"> <img src="img/ggplot-cheatSheet-pt2.png" alt="<center><b>RStudio CheatSheets: <a href='https://www.rstudio.com/resources/cheatsheets'> ggplot2 </a> </b></center>" width="60%" /> <p class="caption"><center><b>RStudio CheatSheets: <a href='https://www.rstudio.com/resources/cheatsheets'> ggplot2 </a> </b></center></p> </div> <!-- esquisse --> --- class: middle # Biblioteca top ```r install.packages("esquisse") library(esquisse) ``` <div class="figure" style="text-align: center"> <img src="img/allisonhorst/R-for-better-ds.png" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center>" width="50%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center></p> </div> <!-- Outras possibilidades gráficas --> --- class: middle # **Quais outras opções de pacotes para visualização de dados?** <!-- gganimate --> --- class: middle # gganimate <div class="figure" style="text-align: center"> <img src="index_files/figure-html/unnamed-chunk-42-1.gif" alt="<center><b>Fonte: <a href='https://www.datanovia.com/en/blog/gganimate-how-to-create-plots-with-beautiful-animation-in-r/'>Adaptado de Data Novia</a></b></center>" width="40%" /> <p class="caption"><center><b>Fonte: <a href='https://www.datanovia.com/en/blog/gganimate-how-to-create-plots-with-beautiful-animation-in-r/'>Adaptado de Data Novia</a></b></center></p> </div> <!-- Highcharter --> --- class: middle # Highcharter
<!-- shiny --> --- class: middle #Shiny <div class="figure" style="text-align: center"> <img src="img/shiny_exemploMapa.gif" alt="<center><b>GIF: Demonstração de um <a href='https://humansofdata.atlan.com/2019/01/shiny-electricity-latrine-water-india/'>Shiny do humansofdata. </a> </b></center>" width="80%" /> <p class="caption"><center><b>GIF: Demonstração de um <a href='https://humansofdata.atlan.com/2019/01/shiny-electricity-latrine-water-india/'>Shiny do humansofdata. </a> </b></center></p> </div> <!-- leaflet --> --- class: middle # Leaflet + Shiny <div class="figure" style="text-align: center"> <img src="img/shinyleaflet.gif" alt="<center><b>GIF: Demonstração de um <a href='http://shiny.rstudio.com/gallery/superzip-example.html'>Shiny do Super Zip Explorer</a> </b></center>" width="80%" /> <p class="caption"><center><b>GIF: Demonstração de um <a href='http://shiny.rstudio.com/gallery/superzip-example.html'>Shiny do Super Zip Explorer</a> </b></center></p> </div> --- class: middle # Shall we? <div class="figure" style="text-align: center"> <img src="img/allisonhorst/community1.jpg" alt="<center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center>" width="40%" /> <p class="caption"><center><b>Ilustração por Allison Horst - Twitter: <a href='https://twitter.com/allison_horst/'> @allison_horst</a> </b></center></p> </div> --- class: center, middle ## Obrigada! - Contato: - Website RLadies Global: [https://rladies.org/](https://rladies.org/) - MeetUp: [https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo](https://www.meetup.com/pt-BR/R-Ladies-Sao-Paulo) - Twitter: [@RLadiesGlobal](https://twitter.com/rladiesglobal), [@RLadiesSaoPaulo](https://twitter.com/RLadiesSaoPaulo) - Instagram: [@RLadiesSaoPaulo](http://instagram.com/RLadiesSaoPaulo) - Facebook: [@RLadiesSaoPaulo](http://facebook.com/RLadiesSaoPaulo) - Github: [https://github.com/rladies/meetup-presentations_sao-paulo](https://github.com/rladies/meetup-presentations_sao-paulo) - R-Ladies LATAM Blog (Latin America) - Em breve! - Código da apresentação disponível [neste repositório](https://github.com/beatrizmilz/aMostra-IME-2019-DataVis).