class: center, middle, inverse, title-slide .title[ # Relatórios reprodutíveis com Rmarkdown e pagedreport ] .author[ ### Camila Braz ] .institute[ ### RLadies - Salvador ] .date[ ### 2023-04-23 ] --- # Sobre mim .pull-left[ - Camila Braz - Bacharela em estatística - UFBA - Mestranda em matemática com ênfase em estatística - UFBA - Analista de dados na SEI ] .pull-right[ <a href="url"><img src="img/camila.jpeg" align="right" height="auto" width="200" style="border-radius:50%"></a> ] <br> <br> ### Contato - Twitter: [@braz_cami](https://twitter.com/braz_cami) - GitHub: [@CamilaBraz](https://github.com/CamilaBraz) - Instagram: [@braz_camila](https://www.instagram.com/braz_camila/) - LinkedIn: <https://www.linkedin.com/in/camila-braz/> --- # R-Ladies <img src="img/hex-rladies.png" width="20%" style="display: block; margin: auto;" /> R-Ladies Global é uma organização mundial cuja missão é promover a diversidade de gênero na comunidade da linguagem de programação R. - Website: <https://www.rladies.org/> - Twitter: [@RLadiesGlobal](https://twitter.com/rladiesglobal), [@RLadiesSalvador](https://twitter.com/rladiessalvador) - Instagram: [@rladiessalvador](https://www.instagram.com/rladiessalvador/) - MeetUp: <https://www.meetup.com/pt-BR/rladies-salvador/> - GitHub: <https://github.com/rladiessalvador> --- # O que veremos nesse curso? - A linguagem Markdown - Como instalar e criar um arquivo RMarkdown - O pacote pagedreport --- # Pré-requisitos ✅ R e RStudio instalados e atualizados: [Link para download](https://posit.co/download/rstudio-desktop/#download) ✅ (Alternativa) Criar uma conta e utilizar o [posit cloud](https://posit.cloud/) ✅ Instalar os pacotes: ```r pacotes <- c('rmarkdown', 'pagedreport', 'knitr', 'DT') install.packages(pacotes) ``` -- ✨ Vontade de aprender! ✨ --- # O que é RMarkdown ? .pull-left[ <img src="img/hex-rmarkdown.png" width="80%" /> ] .pull-right[ - A **reprodutibilidade** é muito importante para o RMarkdown - Formato notebook, similar ao Jupyter ou ao Google Colab - Escrevemos texto e código - Podemos adicionar gráficos e tabelas - Possibilita a utilização de códigos `R`, `Python`, `Markdown`, `HTML`, `CSS`, `SQL`, `LaTeX`, e outros em um único arquivo. ] --- # Exemplo de relatório com RMarkdown <img src="img/rel-caged.png" width="40%" style="display: block; margin: auto;" /> [Relatório mensal do CAGED - SEI](https://www.sei.ba.gov.br/index.php?option=com_content&view=article&id=35&Itemid=1124) --- # Hands on! <br> <br> <img src="https://i.pinimg.com/originals/8f/a8/db/8fa8db7e112b19564ab4ec2466dee396.gif" width="50%" style="display: block; margin: auto;" /> --- # Criando um arquivo RMarkdown  --- # Criando um arquivo RMarkdown .pull-left[  ] .pull-right[ - Pode-se criar um arquivo .pdf ou .html - A estrutura é basicamente a mesma - Nem tudo que funciona no arquivo html irá funcionar no pdf ] --- # A estrutura de um arquivo RMarkdown  --- # Cabeçalho RMarkdown: yaml ## (*yet another markup language*) ```yaml --- title: "Meu primeiro relatório" author: "Camila Braz Soares" date: "2023-04-22" output: pdf_document --- ``` <br> <br> -- ⚠️ Cuidado com a identação! ⚠️ --- # RMarkdown Cheatsheet - Link: <https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf> - No RStudio: No RStudio > Help > Cheatsheets > RMarkdown CheatCheet --- # A linguagem Markdown Markdown é um formato de simples de markup, isso é, de marcação de texto. A ideia é marcar um texto informando o que é importante, o que é um tópico, o que são links e imagens, sem a necessidade de utilizar marcações mais complexas, como o HTML. <br> <br> <img src="img/markdown.png" width="45%" style="display: block; margin: auto;" /> --- # Titulação .pull-left[ `# Título <h1>` ] .pull-right[ # Título <h1> ] ___ .pull-left[ `## Título <h2>` ] .pull-right[ ## Título <h2> ] ___ .pull-left[ `### Título <h3>` ] .pull-right[ #### Título <h1> ] ___ .pull-left[ `#### Título <h4>` ] .pull-right[ #### Título <h4> ] ___ .pull-left[ `##### Título <h5>` ] .pull-right[ ##### Título <h5> ] ___ .pull-left[ `# Título <h6>` ] .pull-right[ ###### Título <h6> ] --- ## Sintaxe básica - Marcando o texto com asteriscos: `Exemplo de como escrever em **negrito** e em *itálico*.` - Marcando o texto com underline: `Exemplo de como escrever em __negrito__ e em _itálico_.` -- ### Resulta em: -- Exemplo de como escrever em __negrito__ e em _itálico_. --- # Sintaxe básica `Exemplo de como escrever o ~~texto riscado~~` -- ### Resulta em: -- Exemplo de como escrever o ~~texto riscado~~. -- --- ## Lista de itens .pull-left[ `* Item 1` `* Item 2` `* Item 3` ] .pull-right[ `1. Item 1` `2. Item 2` `3. Item 3` ] ### Resulta em: .pull-left[ * Item 1 * Item 2 * Item 3 ] .pull-right[ 1. Item 1 2. Item 2 3. Item 3 ] --- ## Links O link pode ser incluído como texto-âncora ou link direto: - Link direto: `<https://www.rladies.org/>` Este é o site R-Ladies Global: <https://www.rladies.org/> - Texto âncora: `[Site R-Ladies Global](https://www.rladies.org/)` Este é o [Site R-Ladies Global](https://www.rladies.org/) --- ## Imagem Para adicionar uma imagem utilize o código: ``  *Obs.:* Pode ser utilizada uma imagem local ou imagem online. -- #### Alternativa usando o pacote `knitr` ```r knitr::include_graphics("caminho-da-sua-imagem/nome-da-imagem.png") ``` --- # Tabelas .pull-left[ ```r # Exemplo | Valor do exemplo # --------- | ------ # Exemplo 1 | R$ 10 # Exemplo 2 | R$ 8 # Exemplo 3 | R$ 7 # Exemplo 4 | R$ 8 ``` ] .pull-right[ Exemplo | Valor do exemplo --------- | ------ Exemplo 1 | R$ 10 Exemplo 2 | R$ 8 Exemplo 3 | R$ 7 Exemplo 4 | R$ 8 ] --- # Tabelas - **Alinhado à esquerda:** usar `:` no lado esquerdo (alinhamento padrão); - **Alinhado à direita:** usar `:` no lado direito; - **Centralizado:** usar `:` dos dois lados. ### Código: ```r # Alinhado a esquerda | Centralizado | Alinhado a direita # :--------- | :------: | -------: # Valor | Valor | Valor ``` ### Resulta em: Alinhado a esquerda | Centralizado | Alinhado a direita :--------- | :------: | -------: Valor | Valor | Valor --- # Tabelas ```r knitr::kable(head(iris), format = 'html') ``` <table> <thead> <tr> <th style="text-align:right;"> Sepal.Length </th> <th style="text-align:right;"> Sepal.Width </th> <th style="text-align:right;"> Petal.Length </th> <th style="text-align:right;"> Petal.Width </th> <th style="text-align:left;"> Species </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 5.1 </td> <td style="text-align:right;"> 3.5 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.9 </td> <td style="text-align:right;"> 3.0 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.7 </td> <td style="text-align:right;"> 3.2 </td> <td style="text-align:right;"> 1.3 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 4.6 </td> <td style="text-align:right;"> 3.1 </td> <td style="text-align:right;"> 1.5 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 5.0 </td> <td style="text-align:right;"> 3.6 </td> <td style="text-align:right;"> 1.4 </td> <td style="text-align:right;"> 0.2 </td> <td style="text-align:left;"> setosa </td> </tr> <tr> <td style="text-align:right;"> 5.4 </td> <td style="text-align:right;"> 3.9 </td> <td style="text-align:right;"> 1.7 </td> <td style="text-align:right;"> 0.4 </td> <td style="text-align:left;"> setosa </td> </tr> </tbody> </table> --- ```r DT::datatable( head(iris, 10), fillContainer = FALSE, options = list(pageLength = 8) ) ```
--- # Código É possível adicionar equações em linha (*in line*) utilizando uma crase antes e após o código. - Esse é um `código` em linha. -- Pode-se adicionar múltiplas linhas de código, ou um *chunk*, adicionando três crases antes e após o código. ```` ```{r nome chunk, eval=FALSE, echo=TRUE, warning=FALSE, message=FALSE} plot(iris) ``` ```` -- ### Dica: 1. Pode-se criar um *chunk* com o atalho `Ctrl + alt + i`. 2. Dê nome aos *chunks* --- # Código ```r iris %>% dplyr::group_by(Species) %>% dplyr::summarise(sepala = mean(Sepal.Length)) -> sepala sepala ``` ``` ## # A tibble: 3 × 2 ## Species sepala ## <fct> <dbl> ## 1 setosa 5.01 ## 2 versicolor 5.94 ## 3 virginica 6.59 ``` #### O que eu escrevi: ```r # O comprimento da sépala da espécie `r sepala[1,1]` é `r sepala[1,2]`. ``` #### Resultado: O comprimento da sépala da espécie setosa é 5.006. --- # Código <table> <thead> <tr> <th style="text-align:left;"> Configuração </th> <th style="text-align:left;"> Descrição </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> eval = FALSE </td> <td style="text-align:left;"> Se deve avaliar o código e incluir seus resultados </td> </tr> <tr> <td style="text-align:left;"> echo = FALSE </td> <td style="text-align:left;"> Se o código deve ser exibido junto com seus resultados </td> </tr> <tr> <td style="text-align:left;"> message = FALSE </td> <td style="text-align:left;"> Se deseja exibir mensagens </td> </tr> <tr> <td style="text-align:left;"> warning = FALSE </td> <td style="text-align:left;"> Se deve exibir avisos </td> </tr> <tr> <td style="text-align:left;"> fig.width = 5 </td> <td style="text-align:left;"> Largura em polegadas para plotagens criadas em chunks </td> </tr> <tr> <td style="text-align:left;"> fig.height = 5 </td> <td style="text-align:left;"> Altura em polegadas para plotagens criadas em chunks </td> </tr> <tr> <td style="text-align:left;"> fig.align = 'center' </td> <td style="text-align:left;"> O alinhamento da figura (center, right, left) </td> </tr> <tr> <td style="text-align:left;"> out.width = '90%' </td> <td style="text-align:left;"> Especificar o tamanho das saídas </td> </tr> </tbody> </table> --- # Gráficos
--- # Gráficos ```r mtcars %>% group_by(cyl) %>% e_charts(wt) %>% e_scatter(mpg, wt) %>% e_scatter(mpg, cyl, y_index = 1) %>% e_grid(index = c(0, 1)) %>% e_x_axis(name = "Weight") %>% e_y_axis(name = "Miles/gallon") %>% e_legend(orient = "vertical", right = "-0.5", top = "40%") %>% e_title(text = "Relação Peso x Consumo de Combustível por Número de Cilindros") %>% e_y_axis(index = 1, show = FALSE) %>% e_tooltip() ``` --- # Expressões matemáticas Você pode escrever expressões matemáticas em LaTeX dentro de um par de símbolos de dólar, por exemplo, $\alpha+\beta$ renderiza `\(\alpha+\beta\)`. Você pode usar o estilo display usando dois símbolos de dólar: ``` $$\bar{X}=\frac{1}{n}\sum_{i=1}^nX_i$$ ``` `$$\bar{X}=\frac{1}{n}\sum_{i=1}^nX_i$$` Dica: 1. Não deve haver espaços depois da abertura `$` ou antes de fechar `$`. --- # O pacote pagedreport Instale o pacote **pagedreport** do [Github](https://github.com/rfortherestofus/pagedreport): ```r install.packages("remotes") remotes::install_github("rfortherestofus/pagedreport", ref = "main") ``` Para mais informações acesse: <https://pagedreport.rfortherestofus.com/> --- # Criando template pagedreport `File -> New File -> R Markdown...`  --- ## Pagedreport <img src="img/windmill.gif" width="50%" style="display: block; margin: auto;" /> --- # Pagedreport ```` --- title: "Title of the report" subtitle: "Subtitle of the report" author: "Author Name" date: "Date" output: pagedreport::paged_windmill: logo: "https://mk0rfortheresto0o08q.kinstacdn.com/wp-content/uploads/2020/08/rru-logo-blue.svg" img_to_dark: FALSE logo_to_white: TRUE knit: pagedown::chrome_print main-color: "#6cabdd" --- ```` --- # Pagedreport ```` --- title: "Relatórios reprodutíveis com Rmarkdown" subtitle: "" author: "R-Ladies Salvador" date: "2023-04-23" output: pagedreport::paged_windmill: front_img: "sua-capa-aqui.png" # Mudar a capa logo: "sua-logo-aqui.svg" # Mudar a logo img_to_dark: FALSE # Imagem dark logo_to_white: TRUE # Logo branca knit: pagedown::chrome_print main-color: "purple" # mudar a cor principal --- ```` --- ```` --- title: "Relatórios reprodutíveis com Rmarkdown" subtitle: "" author: "R-Ladies Salvador" date: "2023-04-23" output: pagedreport::paged_hazelnuts: front_img: "sua-capa-aqui.png" # Mudar a capa back_img: "sua-imagem-de-fundo-aqui.png" # Mudar a imagem de fundo logo: "sua-logo-aqui.svg" # Mudar a logo img_to_dark: TRUE logo_to_white: TRUE knit: pagedown::chrome_print toc-title: "Table of Contents" main-color: "#E40A2D" secondary-color: "#00873E" google-font: TRUE main-font: "Raleway" header-font: "Mountains of Christmas" --- ```` Google fonts: <https://fonts.google.com/> --- # Referências ## RMarkdown - [RMarkdown Cheatsheet](https://www.rstudio.com/wp-content/uploads/2015/02/rmarkdown-cheatsheet.pdf) - [R Markdown: The Definitive Guide](https://bookdown.org/yihui/rmarkdown/) - [R for Data Science - Cap 27: RMarkdown](https://r4ds.had.co.nz/r-markdown.html) ## Pagedreport - [Pagedreport](https://pagedreport.rfortherestofus.com/index.html) --- class: center, middle # Obrigada!