Quarto y R Studio

Una herramienta para la comunicación effectiva de ciencias de datos

Dr. Javier Atalah

16/3/23

Requisitos

Este curso asume que:

  • Conoces RStudio y lo haz usado antes.
  • Sabes un poco de Markdown.
  • Quieres aprender sobre Quarto, la nueva generación de Markdown

¿Qué es Quarto?

  • Quarto es un sistema de publicación científica y técnica de código abierto basado en Pandoc.

  • Permite mezclar texto y código para producir resultados con un formato elegante en documentos, páginas web, blogs, libros y más.

Para que sirve Quarto

  • Para comunicarse con otr@s cientific@s, gestor@s, clientes, administrativ@s o academic@s que quieren centrarse en conclusiones, no en el código detrás del análisis.

  • Para colaborar con otros científic@s de datos que están interesad@s tanto en los resultados y conclusiones como en el código.

  • Como un entorno en el que hacer ciencia de datos reproducible, como un cuaderno de laboratorio (notebook) moderno.

Ciencias de datos reproducible

La capacidad de obtener resultados consistentes utilizando los mismos datos de entrada, pasos, métodos, código y condiciones de análisis.

  • Garantizar que se pueda confiar en el trabajo científico

  • Facilitar el proceso de colaboración y revisión

  • Evitar la desinformación

  • Evita la duplicación del trabajo

  • Garantizar la continuidad

El sucesor de MarkDown

  • Quarto es una versión de próxima generación y multilenguaje de R Markdown de RStudio.

  • Puede “renderizar” la mayoría de los archivos Rmd existentes sin modificaciones.

Tip

Cambia la extension del fichero Markdown de “.Rmd” a “.qmd” para convertir documento.

Posit el nuevo RStudio

  • RStudio is now Posit, our mission continues.

  • Embracing R, Python and other programming languages.

Poder de gigantes

Instalación

“Quarto” está incluido en la última versión de RStudio (v2022.07), lo cual permite crear, editar y ver documentos Quarto.

Para descargar, visite: Posit o Rstudio

Requisitos software

  1. Instala la última versión de RStudio, v2022.071 o posterior.

  2. Instala la última versión de Quarto (v1.0.36 o posterior).

  3. Las librerias utilizadas en la presentacion.

Código
```{r}
#| eval: false
pkg_list <- c(
  "tidyverse", "sf", "leaflet", "reticulate", "CopernicusMarine", "palmerpenguins", "sjPlot", "lme4"
)
install.packages(pkg_list)
```

Nota

El material del curso esta disponible en https://github.com/jatalah/Quarto.git

Interfaz de R a Python usando Reticulate

  • El paquete reticulate proporciona una interfaz R para módulos, clases y funciones de Python.

https://rstudio.github.io/reticulate/

Código
```{python}
#| eval: false
!python -m pip install -U matplotlib
```

Como clonar un Github repo

Navega a https://github.com/jatalah/Quarto.git

  1. Presiona el boton verde “Code” y copia el url bajo las pestana HTTPS https://github.com/jatalah/Quarto.git

  2. En RStudio, usa File > New Project > Version Control > From Git > y luego copia el URL en source repo box y luego enter.

Creating Documents

Use the File : New File : Quarto Document… command to create new Quarto documents:

Hello Quarto

Rendering

Utiliza el botón “Renderizar” en el IDE de RStudio para renderizar el archivo y previsualizar la salida con un solo clic o combinación de teclas (Ctrl) + Shift + K) o (⇧⌘K) .

Rendering alternatives

Alternativamente puedes usar:

  • “Renderizar al guardar” en la barra de herramientas del editor.

- Renderizar desde la consola de R a través del paquete quarto:

Código
install.packages("quarto")
quarto::quarto_render("hello.qmd")

Autoring

  • RStudio editor: visual (on the left) and source (on the right).

Quarto - Visual Editor

Están disponibles comandos adicionales en los menús de Formato, Insertar y Tabla:

A snippet of an RStudio window showing the options bar at the top of an RMarkdown document.

Format Insert Table
The contents of the Format drop down menu. The contents of the Table drop down menu.

YAML header

  • Un YAML header (encabezado YAML) es una sección de metadatos que se encuentra al comienzo de un archivo YAML, como Quarto.

  • Esta delimitado por tres guiones (---) al principio y al final.

title: "Hello, Quarto"
format: html
date: 15-03-2023
editor: visual

YAML header formato mixto

title: "Informe DeepFish2: análisis de datos"
author:
  - name: Javier Atalah 
    url: https://scholar.google.co.nz/citations?user=DsgqR_oAAAAJ&hl=es
    affiliation: Departamento de Ciencias del Mar y Biología Aplicada, Universidad de Alicante
    affiliation-url: https://dcmba.ua.es/
date: "16 March, 2023"
editor: visual
lang: es
bibliography: references.bib
biblio-title: "Referencias"
execute:
  warning: false
  cache: true
format:
  html:
    toc: true
    echo: false
    number-sections: true
    toc-location: left
    fig-dpi: 300
    self-contained: true
  docx:
    toc: true
    echo: false
    cache: false
    number-sections: true
    fig-width: 7
    fig-height: 5
    fig-align: center
    fig-dpi: 300

Anatomia de un code chunk

Código
```{r}
#| eval: false

library(tidyverse)
glimpse(mtcars)
```
  • Tiene tres backticks a cada lado

  • Coloca el motor (r) entre llaves {r}.

  • Coloca las opciones debajo, detrás del #| (tubería de hash): #| opción1: valor

Chunk de R

La Figura 1 que explora el efecto de la temperatura en los niveles de ozono.

Código
library(ggplot2) # loads the ggplot2 package
ggplot(airquality, aes(Temp, Ozone)) + # creates a scatterplot of Temp and Ozone
  geom_point() + # adds points to the scatterplot
  geom_smooth(method = "loess") + # adds a loess line to the scatterplot
  theme_minimal() + # changes the theme of the plot to minimal
  labs(x = "Temperature") # changes the x-axis label to "Temperature"

Figura 1: Temperature and ozone level.

Chunk Phyton

Código
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()

Figura 2: A line plot on a polar axis

Ficheros HTML

format:
  html:
    echo: false
    toc: true
    number-sections: true
    toc-location: left

Articulos PDF

format:
  pdf:
    template: mytemplate.tex

Ver detalles de Journal Articles en https://github.com/quarto-journals/

----
title: "My Document"
toc: true
format:
   acm-pdf: default
   acm-html: default
---

Documentos Word

Si deseas personalizar la apariencia del resultado de MS Word, Pandoc admite Word templates.

Aquí hay un ejemplo de cómo especificar un documento de referencia personalizado para docx:

format:
  docx:
    toc: true
    echo: false
    cache: false
     reference-doc: custom-reference-doc.docx

Presentaciones

  • Quarto supports a variety of formats for creating presentations, including:

Fondo de diapositivas

Establezca el atributo background en una diapositiva para cambiar el color de fondo (se admiten todos los formatos de color CSS).

Hay diferentes transiciones de fondo disponibles a través de la opción background-transition.

Media Backgrounds

Puedes también usar como fondo:

  • Una imagen: background-image

  • Un video: background-video

  • An iframe: background-iframe

Listas incrementales

Las listas pueden ser mostradas de manera incremental opcionalmente:

  • Primer ítem
  • Segundo ítem
  • Tercer ítem


Inserta pausas para hacer que otros tipos de contenido se muestren de forma incremental.

Tablas

Se pueden insertar col el editor visual.

Table 12. Fish abundance and biomass.

Species Abundance Biomass
Pagrus pagrus 12 2400
Serranus scriba 16 6500

Tablas knitr

Motor Trend Car Road Tests

Los datos se extrajeron de la revista estadounidense Motor Trend de 1974 y comprenden el consumo de combustible y 10 aspectos del diseño y rendimiento del automóvil para 32 automóviles.

Tabla 1: Consumo de combustible y 10 aspectos del diseño y rendimiento de automóviles.
mpg cyl disp hp wt
Mazda RX4 21.0 6 160 110 2.620
Mazda RX4 Wag 21.0 6 160 110 2.875
Datsun 710 22.8 4 108 93 2.320
Hornet 4 Drive 21.4 6 258 110 3.215
Hornet Sportabout 18.7 8 360 175 3.440
Valiant 18.1 6 225 105 3.460

Tablas modelos estadísticos

La Tabla 2 muestra un ejemplo de un model linear mixto usando library(sjPlot) .

Código
library(sjPlot)
library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
tab_model(fm1)
Tabla 2: Summary results of the linear mixed model analysing the sleep study data.
  Reaction
Predictors Estimates CI p
(Intercept) 251.41 237.94 – 264.87 <0.001
Days 10.47 7.42 – 13.52 <0.001
Random Effects
σ2 654.94
τ00 Subject 612.10
τ11 Subject.Days 35.07
ρ01 Subject 0.07
ICC 0.72
N Subject 18
Observations 180
Marginal R2 / Conditional R2 0.279 / 0.799

Tablas interactivas con DT

Código
library(DT)
datatable(iris)

Tabsets

mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

LaTeX Equations

MathJax renderizando ecuaciones a HTML

\begin{gather*}
a_1=b_1+c_1\\
a_2=b_2+c_2-d_2+e_2
\end{gather*}
\begin{align}
a_{11}& =b_{11}&
  a_{12}& =b_{12}\\
a_{21}& =b_{21}&
  a_{22}& =b_{22}+c_{22}
\end{align}
\[\begin{gather*} a_1=b_1+c_1\\ a_2=b_2+c_2-d_2+e_2 \end{gather*}\] \[\begin{align} a_{11}& =b_{11}& a_{12}& =b_{12}\\ a_{21}& =b_{21}& a_{22}& =b_{22}+c_{22} \end{align}\]

Referencias

  • Quarto utiliza la representación estándar de markdown para las citas (por ejemplo, [@citation])

  • Las citas van dentro de corchetes y se separan por punto y coma.

  • Se pueden insertar usando el modo editor visual

Referencias formato bib

  • Usando una fuente de datos bibliográficos, por ejemplo, un archivo BibLaTeX (.bib) o BibTeX (.bibtex).
title: "Informe DeepFish2: análisis de datos"
author:
  - name: Javier Atalah 
    url: https://scholar.google.co.nz/citations?user=DsgqR_oAAAAJ&hl=es
    affiliation: Departamento de Ciencias del Mar y Biología Aplicada, Universidad de Alicante
    affiliation-url: https://dcmba.ua.es/
date: "16 March, 2023"
lang: es
bibliography: references.bib
biblio-title: "Referencias"

Gráficas interactivas con plotly

Figura 3: Scatterplot datos pinguinos

Interactive widgets

Interactive maps based on Copernicus satellite data download using library(Copernicus Marine)

Publicaciones

Los documentos Quarto se pueden subir facilmenet a la red para compartir.

  • Rpubs: facil con le boton de Publish en RStudio o usando quarto::quarto_publish_doc()

  • Quarto Pubs: nueva plataforma. Utiliza el Terminal

    Quarto publish Quarto pub document.Qmd

  • RStudio connect

rsconnect::connectUser()

  • GitHub

usethis::use_git()

usethis::use_github()

Algunos ejemplos

Chat GPT

La revolución de ChatGPT y OpenAI está en Rstudio y Quarto.

require(devtools)
install_github("MichelNivard/gptstudio")

Algunos ejemplos:

{{https://raw.githubusercontent.com/MichelNivard/gptstudio/main/media/prompt_code.gif}}

{{https://raw.githubusercontent.com/MichelNivard/gptstudio/main/media/comments.gif}}

Gracias!

Documentos

Presentaciones