GET00183 - Visualização de Dados
Em muitas situações práticas do dia a dia, precisamos transformar nossas análises em documentos, relatórios, apresentaçoes ou até mesmo painéis interativos de alta qualidade.
No R, o R Markdown é a ferramenta que irá nos ajudar a criar estes documentos. Mas antes de falarmos sobre o R Markdown, iremos discutir um pouco sobre o Markdown.
1 - Markdown
Desenvolvido em 2004 por John Gruber e Aaron Swartz para simplificar a estruturação de um texto, o Markdown é uma linguagem de marcação, isto é, não é uma linguagem de programação. As linguagens de marcação, de uma forma geral, nos dizem como algo deve ser entendido, mas não têm capacidade de processamento e execução de funções. Sendo assim, o Markdown pode ser visto como um sistema de formatação aberto que torna a escrita e a leitura mais simples.
Por exemplo, uma das linguagens de marcação mais usadas é o HTML. Ela apenas diz como uma página web está estruturada, mas não executa nenhum processamento. O Markdown, da mesma forma, apenas informa como um documento está estruturado.
Podemos citar como uma das grandes vantagens do Markdown, a sua simplicidade e a possibilidade de utilização de uma linguagem comum para a criação de vários tipos de documentos (vários mesmo). Por exemplo, um mesmo código Markdown pode ser convertido para LaTeX (gera pdf’s), HTML, docx etc. Entretanto, para tal, é necessário um conversor, que lê um código em Markdown e, considerando a escolha do output desejado, converte o arquivo para a linguagem desejada. Isto ficará mais claro com os exemplos que serão discutidos ao longo deste material.
2 - R Markdown
O R Markdown é a possibilidade de executarmos scripts em R (além de outras linguagens) e incorporá-los a um arquivo Markdown (extensão .md). O responsável pela execução dos “pedaços” (chunk) de códigos é o pacote knitr que gerará um arquivo .md com os códigos e seus resultados. Na sequência, o pandoc, que é um conversor, converte-o para a linguagem desejada, gerando os arquivos nos formatos escolhidos (.html, .docx, .pdf, .odt).
Com R Markdown, é possível:
- Compilar um documento em um relatório com diferentes formatos de saída (PDF, HTML e Word).
- Produzir slides para apresentações.
- Criar painéis interativos, com layouts atraentes e que se adaptam à tela do usuário.
- Criar relatórios interativos com Shiny.
- Escrever artigos científicos ou livros.
- Criar blogs ou sites.
2.1 - Primeiros passos no R Markdown
Instale o pacote knitr. Após a instalação, no Rstudio, acesse os menus File > New File > R Markdown… e clique em OK para criar um novo documento R Markdown com formato HTML. Você verá a seguinte janela:
Figura 1: Criando um primeiro R Markdown em HTML.
A janela acima permite que seja definido um título, o autor, a data e o formato na qual o arquivo será produzido. Se formos produzir o arquivo em PDF ou em word é preciso verificar se possuímos os pré-requisitos indicados. Após clicar em ok, Você verá o seguinte documento:
Figura 2: Arquivo padrão do R Markdown.
A figura acima trás os três componentes básicos de um documento R Markdown: YAML, chunks e o texto.
Figura 3: YAML.
Os Metadados, escritos no cabeçalho entre o par de três traços (—), são conhecidos como YAML.
O YAML é o responsável por setar as configurações dos documentos. Basicamente, estamos informando qual é o título do documento, a data de criação, o nome do autor e o tipo de output que desejamos. No exemplo acima, estamos definido como output html_document, é possível incluir ainda outras formatações como tamanhos das figuras, numerações de seções, entre outros.
Se quiséssemos um arquivo no formato Word (.docx), o output poderia ser modificado para word_document, se quiséssemos um arquivo no formato PDF, o output poderia ser modificado para pdf_document. Cada formato possui um conjunto de opções disponíveis. Nesse caso, é importante olhar-se a página de cada formato disponível na documentação do RMarkdown.
Figura 4: Texto
Na figura acima, é mostrado como o texto (partes em branco no exemplo) se mistura com o código de markdown. Esse código markdown, quando convertido, gerará a formatação desejada. Na próxima seção, detalharemos o que cada marcação faz.
Figura 5: Chunck
Os Code Chunks (partes nos blocos em cinza, chamados de chunks) seguem a sintaxe da linguagem especificada no cabeçalho do bloco (por padrão é R). Eles são pedaços de código em R que podem ser executados para gerar resultados que serão incorporados ao documento.
Você pode inserir um chunk manualmente ou com o atalho CTRL + ALT + I. Dentro de {} é possível incluir uma série de opções relacionadas à execução do código. Manualmente, um chunk de código é criado por um par de três aspas, como em ```{r}, onde r indica a linguagem do código. No exemplo acima, está sendo criado um gráfico. Abaixo, falaremos sobre algumas dessas opções.
Após a criação de um documento, o passo seguinte é realizar a renderização do mesmo. A forma mais simples é feita por meio do botão knit, disponível na interface do RStudio.
Renderizando no R Markdown.
Renderize o arquivo criado! Avalie o arquivo criado. Existe alguma diferença entre os dois chuncks com análises no arquivo?
2.2 - Sintaxe
Abaixo encontram-se os principais elementos de sintaxe do R Markdown. Vocês perceberão que vários são autoexplicativos. Para alguns, faremos alguns comentários:
Cabeçalhos
# Cabeçalho de primeiro nível
## Cabeçalho de segundo nível
### Cabeçalho de terceiro nívelO resultado em um documento com output definido como html_document seria:
Cabeçalho de primeiro nível
Cabeçalho de segundo nível
Cabeçalho de terceiro nível
Estilo de texto
*Itálico* e **Negrito**Itálico e Negrito
Código processado no texto:
A média dos valores é `r mean(c(2,4,3,1))`.A média dos valores é 2.5.
Código no texto:
A função `mean(x)` calcula a média do vetor x.A função mean(x) calcula a média do vetor x.
Imagens:
Listas não ordenadas:
* Item a
* Item b
+ Subitem b1
+ Subitem b2- Item a
- Item b
- Subitem b1
- Subitem b2
Listas ordenadas:
1. Item 1
2. Item 2
3. Item 3
i. Item 3a
ii. Item 3b- Item 1
- Item 2
- Item 3
- Item 3a
- Item 3b
Tabelas:
——–: indica que a Coluna 1 está alinhada à direita. :————: indica que a coluna está centralizada. Alguns pacotes do R fornecem funções para a geração de tabelas a partir de data.frames e matrizes. Veja:
País | Número de medalhas de ouro Tokyo 2021
-------------: | :-------------:
USA | 39
China | 38
Brasil | 7
Fonte: COI.| País | Número de medalhas de ouro em Tokyo 2021 |
|---|---|
| USA | 39 |
| China | 38 |
| Brasil | 7 |
Fonte: COI.
Ou dentro de um chunck crie o seguinte código.
library(tibble)
pais = c("USA","China","Brasil")
ouro = c(39,38,7)
knitr::kable(tibble(pais, ouro), align = 'cc')| pais | ouro |
|---|---|
| USA | 39 |
| China | 38 |
| Brasil | 7 |
Equação:
Modelo de regressão linear simples: $y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.$Modelo de regressão linear simples: \(y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.\)
Modelo de regressão linear simples: $$y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.$$Modelo de regressão linear simples: \[y_i = \alpha + \beta x_i + e_i, i = 1, \ldots, n.\]
2.3 - Opções de chunck
Os chunks de códigos ({r, …}) possuem uma série de argumentos que manipulados apropriadamente nos rendem diferentes saídas, isto é, podemos omitir o código, podemos omitir o resultado do código, entre outras. Elencaremos aqui as principais. Para a lista completa, veja este link.
| Opção | Valor Padrão | Descrição |
|---|---|---|
| eval | TRUE | Indica se o código deve ser executado |
| include | TRUE | Indica se o código deve ser exibido no documento final. Os resultados não serão apresentados. |
| collapse | FALSE | Indica se o código e os resultados do chunk devem ser colapsados em um bloco único. |
| echo | FALSE | Indica se o código será exibido no documento final. Os resultados serão apresentados. |
| error | TRUE | Indica se mensagens de erros serão exibidas. |
| message | TRUE | Indica se mensagens geradas pelo código serão exibidas. |
| warning | TRUE | Indica se avisos gerados pelo código serão exibidos. |
| fig.cap | NULL | Título de gráfico referente ao chunk. |
| fig.height | 7 | Altura para gráficos criados pelo código (em polegadas). |
| fig.width | 7 | Largura para gráficos criados pelo código (em polegadas). |
Atividade: Crie um R Markdown e explique o processo de criação de um gráfico dependente do tempo usando o ggplot2.
Atividade: Crie um relatório descrevendo o comportamento do número de vendas (total e por semestre) nos bairros de recife. Além disso examine graficamente a existência de relação das vendas (total e por semestre) com o percentual investigo em panfletagem. Comente os resultados. Não devem aparecer códigos no relatório criado.