Introducción a Quarto

R Ladies Cuernavaca

Maricela Carrera

15 Jan, 2025

¡Bienvenidos a aprender acerca de Quarto!

Mi nombre es Maricela Carrera

Your Profile Picture

@haly-en

@HalyHalymary

@Maricela Carrera

¿Qué es Quarto?

Es un sistema de publicación científica y técnica

de código abierto.

Quarto es un lenguaje de marcado para la creación de documentos. Es una herramienta versátil que se puede usar para crear una amplia variedad de documentos.

Quarto se ve así:

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

## Meet Quarto

Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see <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()
```

Quarto Demo

Quarto es un lenguaje de marcado para la creación de documentos. Es una herramienta versátil que se puede usar para crear una amplia variedad de documentos.
permite combinar texto narrativo y código

Esquema de un fragmento de código escrito con el lenguaje de marcado de HTML.

Quarto es un lenguaje de marcado para la creación de documentos. Es una herramienta versátil que se puede usar para crear una amplia variedad de documentos.
Tipos de lenguaje de markup

Markdown

LaTeX

Quarto es un lenguaje de marcado para la creación de documentos. Es una herramienta versátil que se puede usar para crear una amplia variedad de documentos.
Markdown LaTex

¿Por qué Quarto?

Si ya existía Rmarkdown
Construido con base en Rmarkdown

Sintaxis Markdown Salida
*italicas* y **negritas** italicas y negritas
superíndice^2^ / subíndice~2~ superíndice2 / subíndice2
~~tachado o strikethrough~~ tachado o strikethrough
`código literal` código literal
- Elemento de la lista 1 - Elemento de la lista 1
[Enlace](https://www.google.com/) Enlace

¿Por qué Quarto?

UNIFICA y expande el Ecosistema Rmarkdown:

Imagen de Nicola Rennie & Colin Gillespie

¿Por qué Quarto?

Nuevas características

  • Cross references
  • Advanced layout
  • Figure/layout panels
  • Callouts
  • Diagrams
  • Extensions
  • Interactivity
  • YAML intelligence
  • Publishing
  • Conditional content
  • Notebook filters

Quarto es:

  • Es flexible y portable: Puedes usar Quarto para crear una amplia variedad de documentos. Los documentos Quarto se pueden generar en una variedad de formatos, como HTML, PDF, EPUB y DOCX.
  • Es fácil de aprender: Markdown es un lenguaje de marcado ligero y fácil de aprender.
  • Es gratis y de código abierto: Puedes usar Quarto de forma gratuita y el código fuente está disponible para que cualquiera lo pueda modificar.

Más importante

El autor tiene que preocuparse más por el contenido que por el formato.

Ventajas de usar

  • Multiplataforma: Se puede utilizar en Windows, Mac Os, ubuntu, Debian…
  • Multilenguaje: R, Python, bash… Julia u Observable.
  • Multi-entorno:

BATERIAS INCLUIDAS

¡Un mundo de posibilidades!

Distintos formatos

Texto con parámetros

Los datos de pingüinos del paquete palmerpenguins contienen medidas de tamaño de 344 pingüinos de tres especies observadas en tres islas del archipiélago de Palmer , Antártida.


Los datos de `pingüinos` del paquete [**palmerpenguins**](https://allisonhorst.github.io/palmerpenguins "palmerpenguins R package") contienen medidas de tamaño de 344 pingüinos de tres especies observadas en tres islas del archipiélago de Palmer , Antártida.

Se puede agregar código de R

```{r}
#| echo: true
#| eval: FALSE
#| code-line-numbers: 3-4

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")) 
```



Code
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")) 

Código de Python

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
plt.show()

Para dar clases

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
plt.show()

Codigo y resultado

Code
library(ggplot2)
ggplot(airquality, aes(Temp, Ozone)) + 
  geom_point() + 
  geom_smooth(method = "loess")

Codigo y resultado

¿Y tablas?

knitr::kable()

Code
tab <- starwars |>
  tidyr::drop_na(species) |> 
  group_by(species) |>
  summarise(
    n = n(),
    mean_heigth = round(mean(height, na.rm = TRUE)),
    mean_mass = round(mean(mass, na.rm = TRUE))
  ) |> 
  slice_max(order_by = n, n = 4) 

knitr::kable(tab)
species n mean_heigth mean_mass
Human 35 177 83
Droid 6 131 70
Gungan 3 209 74
Kaminoan 2 221 88
Mirialan 2 168 53
Twi’lek 2 179 55
Wookiee 2 231 124
Zabrak 2 173 80

DT::datatable()

Con la clase smaller en la diapositiva! Ex: ## Nombre de diapositiva {.smaller}

Diagramas con Mermaid!

Lean sobre esto en: post by Mine Çetinkaya-Rundel.

Diagrams

Quarto has native support for embedding Mermaid and Graphviz diagrams.

Code
```{mermaid}
%%| fig-width: 6
flowchart LR
  A[1] --> B(2)
  B --> C{3}
  C --> D[4]
  C --> E[5]
```

flowchart LR
  A[1] --> B(2)
  B --> C{3}
  C --> D[4]
  C --> E[5]

Quarto

Equations

```{markdown}
$$E = mc^{2}$$
```

\[E = mc^{2}\]

Callout Blocks

:::{.callout-tip}

Note that there are five types of callouts, including: 
`note`, `tip`, `warning`, `caution`, and `important`.

:::

Tip

Note that there are five types of callouts, including: note, tip, warning, caution, and important.

Divs

Callout Blocks

::: {#call1 .callout-note appearance="simple"}

## Pay Attention

Using callouts is an effective way to highlight content that your reader give special consideration or attention.

:::

Pay Attention

Using callouts is an effective way to highlight content that your reader give special consideration or attention.

Divs

Callout Blocks

Warning

.callout-warning

Caution

.callout-caution

Important

.callout-important

Divs

Columnas múltiples

```{markdown}
::: {layout-ncol=2}

![](imagenes/pinguinos.jpg){width="50%"}

Photo by <a href="https://unsplash.com/@corneliusventures?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Cornelius Ventures</a> on <a href="https://unsplash.com/s/photos/penguin?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
:::
```

. . .

Divs

Tabsets

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

`library(dplyr)`

## Python

`import pandas as pd`
:::
```

library(dplyr)

import pandas as pd

Exportar

Puedes usar la función: pagedown::chrome_print() to print the HTML version into a PDF!

pagedown::chrome_print("path-to-file.html")

Recursos:

  • Plantilla para tesis en Quarto

  • Gracias! a La librería de pingüinos Horst AM, Hill AP, Gorman KB (2020). palmerpenguins: Palmer Archipelago (Antarctica) penguin data. R package version 0.1.0. https://allisonhorst.github.io/palmerpenguins/. doi: 10.5281/zenodo.3960218. ## Propaganda:

PyLadies

Introducción a Quarto