Python + R juntos com Quarto: seus relatórios nunca mais serão os mesmos

Bianca Muniz || Agência Pública de Jornalismo Investigativo

Introdução

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Oi, eu sou a Bianca!

Bianca Muniz

  • 🎲 Analista de dados na Agência Pública de Jornalismo Investigativo

  • 👩🏿‍🔬 Biomédica e mestre em Ciências pela Unifesp

  • 🤖 Especialista em Jornalismo de Dados, Automação e Data Storytelling pelo Insper

  • 📰 Estudante de jornalismo na USP

  • ❤️ Amo desenhar, shows e música emo

Quem são vocês?

Instruções

Para acompanhar o workshop: Posit Cloud

Em casa

Para detalhes, clique aqui.

Usando R e Python com Quarto

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Vamos criar um projeto com as duas linguagens

Objetivos

  • Criar um relatório com uma análise de dados utilizando as duas linguagens
  • Sugestão: Coleta de dados de multas ambientais com Python e a análise com R

Alinhamento

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

R versus Python

  • Esse é um workshop de R? É um workshop de Python?
  • Quarto… WTF???

R versus E Python

Por que escolher uma linguagem se você pode utilizar as duas?

  • Uso do pacote Reticulate
meme

R e Python contra o Excel

Spoiler: No sábado teremos um workshop de editores de planilhas! Em defesa de um bom Google Sheets

Sobre Quarto

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

O que é Quarto®?

O que é Quarto®?

Sistema de publicação científica e técnica de código aberto construído sobre o Pandoc.

O que é Quarto®?

Sistema de publicação: Ferramenta para construir documentos dinâmicos que combinam código, saída e texto

knitr

---
title: "ggplot2 demo"
format: 
  html:
    code-fold: true
---

## Meet Quarto

Quarto permite que você integre conteúdo e código executável em um documento finalizado. Para saber mais sobre o Quarto, acesse <https://quarto.org>.

```{r}
#| label: plot-penguins
#| echo: false
#| message: false
#| warning: false

library(tidyverse)
library(palmerpenguins)

ggplot(penguins, 
       aes(x = flipper_length_mm, y = bill_length_mm)) +
  geom_point(aes(color = species, shape = species)) +
  scale_color_manual(values = c("darkorange","purple","cyan4")) +
  labs(
    title = "Flipper and bill length",
    subtitle = "Dimensions for penguins at Palmer Station LTER",
    x = "Flipper length (mm)", y = "Bill length (mm)",
    color = "Penguin species", shape = "Penguin species"
  ) +
  theme_minimal()
```

O que é Quarto®?

Científica e técnica: usada para documentação; possui recursos específicos para artigos de periódicos ou trabalhos científicos.

O que é Quarto®?

Código aberto: o código-fonte é disponibilizado publicamente, permitindo que qualquer pessoa o visualize, modifique e distribua conforme os termos de uma licença específica.

O que é Quarto®?

Pandoc: Ferramenta para construir documentos dinâmicos que combinam código, saída e texto

Por que “Quarto”?

“Quarto é o formato de um livro ou panfleto produzido a partir de folhas inteiras impressas com oito páginas de texto, quatro de cada lado, depois dobradas duas vezes para formar quatro folhas.”

Formatos

https://realworlddatascience.net/

Python for Data Analysis, 3E by Wes McKinney

Blog das R-Ladies São Paulo

The untold story of palmerpenguins by Dr. Kristen Gorman, Dr. Allison Horst, and
Dr. Alison Hill

Journal of Statistical Software (JSS)

Como usar Quarto

Instalação

Hoje vamos usar o Posit Cloud (ambiente virtual), mas para instalar em sua máquina, siga os passos do site:

Trabalhando no RStudio

Trabalhando no RStudio

Trabalhando no RStudio

Renderizando

Botão Render () no RStudio IDE -> preview da saída

Renderizar automaticamente:

. . .

Componentes de um documento Quarto

YAML

  • Local onde são inseridas configurações sobre o documento (formatação, data, título, autor, entre outros). É sempre inserido no início do documento e delimitado por —.

    Aviso

    • Algumas opções são específicas de um determinado tipo documento, assim, podem não funcionar em outro formato (pdf, html, revealjs, por exemplo);

    • Cuidado com a indentação!

YAML

---
title: "Penguins, meet Quarto!"
format: html
editor: visual
---

YAML

---
title: "Penguins, meet Quarto!"
subtitle: "Intro to Quarto Exercise"
format: html
editor: visual
---

Code Chunks

  • Trechos de código começam e terminam com três crases (geralmente).
  • Trechos de código são identificados com uma linguagem de programação entre chaves {}
  • Podem incluir opções de trecho opcionais, no estilo YAML, identificadas por #| no início da linha.

Code Chunks

```{r, label="plot-penguins", warning=FALSE, echo=FALSE}
ggplot(penguins, 
       aes(x = flipper_length_mm, y = bill_length_mm)) +
  geom_point(aes(color = species, shape = species)) +
  scale_color_manual(values = c("darkorange","purple","cyan4")) +
  labs(
    title = "Flipper and bill length",
    subtitle = "Dimensions for penguins at Palmer Station LTER",
    x = "Flipper length (mm)", y = "Bill length (mm)",
    color = "Penguin species", shape = "Penguin species"
  ) +
  theme_minimal()
```

Code Chunks

```{r}
#| warning: false
#| echo: false

ggplot(penguins, 
       aes(x = flipper_length_mm, y = bill_length_mm)) +
  geom_point(aes(color = species, shape = species)) +
  scale_color_manual(values = c("darkorange","purple","cyan4")) +
  labs(
    title = "Flipper and bill length",
    subtitle = "Dimensions for penguins at Palmer Station LTER",
    x = "Flipper length (mm)", y = "Bill length (mm)",
    color = "Penguin species", shape = "Penguin species"
  ) +
  theme_minimal()
```

Code Chunks

```{r}
#| warning: false
#| echo: false
#| fig.alt: "Scatterplot with flipper length in millimeters on
#|  the x-axis, bill length in millimeters on the y-axis, colored
#|  by species, showing a slightly positive relationship with
#|  Chinstrap penguins having higher bill length but lower body
#|  mass, Adelie with low bill length and low body mass, and
#|  Gentoo with high body mass and high bill length."

ggplot(penguins, 
       aes(x = flipper_length_mm, y = bill_length_mm)) +
  geom_point(aes(color = species, shape = species)) +
  scale_color_manual(values = c("darkorange","purple","cyan4")) +
  labs(
    title = "Flipper and bill length",
    subtitle = "Dimensions for penguins at Palmer Station LTER",
    x = "Flipper length (mm)", y = "Bill length (mm)",
    color = "Penguin species", shape = "Penguin species"
  ) +
  theme_minimal()
```

Code Chunks

Markdown

  • Markdown é uma linguagem leve para criar texto formatado
  • Quarto é baseado no Pandoc e usa sua variação de markdown como sintaxe do documento

Markdown


The `penguins` data from the [**palmerpenguins**](https://allisonhorst.github.io/palmerpenguins "palmerpenguins R package") package contains size measurements for `r nrow(penguins)` penguins from three species observed on three islands in the Palmer Archipelago, Antarctica.

The penguins data from the palmerpenguins package contains size measurements for 344 penguins from three species observed on three islands in the Palmer Archipelago, Antarctica.

Markdown

Formatação

Sintaxe Markdown Saída
*itálico* e **bold**
itálico e bold
sobrescrito^2^ / subscrito~2~
sobescrito2 / subescrito2
~~tachado~~
tachado
`código`
código

Markdown

Sintaxe Markdown Saída
<https://quarto.org>
https://quarto.org
[Quarto](https://quarto.org)
Quarto
![](penguin.jpg)

Para ler depois: Quarto guide for Markdown basics

Banners de título

As páginas HTML renderizadas com Quarto incluem um banner de título formatado no início do artigo.

Banners de título

---
title: "Penguins, meet Quarto!"
format: html
editor: visual
---

Banners de título

---
title: "Penguins, meet Quarto!"
title-block-banner: true
format: html
editor: visual
---

Banners de título

Mude a cor…

---
title: "Penguins, meet Quarto!"
title-block-banner: "#FDA172"
format: html
editor: visual
---

Banners de título

Ou use uma foto!

---
title: "Penguins, meet Quarto!"
title-block-banner: "banner-image.jpg"
format: html
editor: visual
---

Divs

Callout Blocks

::: {#call1 .callout-note appearance="simple"}
## Atenção
O uso de chamadas é uma maneira eficaz de destacar o conteúdo ao qual você deseja que seu leitor dê consideração ou atenção especial
:::

Atenção

O uso de chamadas é uma maneira eficaz de destacar o conteúdo ao qual você deseja que seu leitor dê consideração ou atenção especial

Divs

Callout Blocks

Aviso

.callout-warning

Cuidado

.callout-caution

Importante

.callout-important

Divs

Tabsets

::: {.panel-tabset group="language"}
## R

`library(dplyr)`

## Python

`import pandas as pd`
:::

library(dplyr)

import pandas as pd

Meu primeiro relatório com Quarto

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Criando um novo documento

Clique em File > New File > Quarto Document:

Estilizando Quarto

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Temas HTML

Quarto possui 25 temas de Bootswatch:

  • default
  • cerulean
  • cosmo
  • cyborg
  • darkly
  • flatly
  • journal
  • litera
  • lumen
  • lux
  • materia
  • minty
  • morph
  • pulse
  • quartz
  • sandstone
  • simplex
  • sketchy
  • slate
  • solar
  • spacelab
  • superhero
  • united
  • vapor
  • yeti
  • zephyr

Temas HTML

Opção theme no YAML:

---
format:
  html:
    theme: flatly
---

Temas HTML

Você pode fazer uma ampla personalização adicional usando arquivos de tema SASS.

  • Bootstrap possui mais de 1.400 variáveis que controlam fontes, cores, preenchimento, bordas e muito mais!
/*-- scss:defaults --*/

$body-bg: #CDEEFD;

/*-- scss:rules --*/
h1, h2, h3, h4, h5, h6 {
  text-shadow: -1px -1px 0 rgba(0, 0, 0, .3);
}

Temas HTML

Tema personalizado em theme:

``` {{yaml}}
theme:
  - flatly
  - custom.scss
```

Temas HTML

Quarto permite modos “claro” e “escuro”.

``` {{yaml}}
theme:
  light: flatly
  dark: darkly
```

Publicando com Quarto

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Opções

Como o conteúdo renderizado com Quarto utiliza formatos padrão (HTML, PDFs, Word, etc.), ele pode ser publicado em qualquer lugar.

  • Quarto Pub
  • GitHub Pages

Mão na massa!

Programação

  • Introdução

  • Usando R e Python com Quarto

  • Alinhamento

  • Sobre Quarto

  • Meu primeiro relatório com Quarto

  • Estilizando Quarto

  • Publicando com Quarto

  • Mão na massa!

Vamos criar um projeto com as duas linguagens

Objetivos

  • Criar um relatório com uma análise de dados utilizando as duas linguagens
  • Sugestão: Coleta de dados com Python e a análise com R