Sesión 8

Quarto: figuras, integración y publicación

Juan David Leongómez

Universidad El Bosque

18 de junio de 2026

Agenda

  • Figuras: caption, tamaño y alineación
  • Referencias cruzadas para figuras
  • Composición de figuras con patchwork
  • El documento integrado
  • Publicación en Posit Connect Cloud

Parte 1

Figuras en documentos Quarto

Opciones de figura

Las figuras en bloques de código aceptan opciones que controlan su apariencia en el documento:

```{r}
#| echo: false
#| fig-cap: "Masa corporal por especie"
#| fig-width: 6
#| fig-height: 3.5
#| fig-align: center

pinguinos |>
  ggplot(aes(x = species,
             y = body_mass_g,
             fill = species)) +
  geom_boxplot(show.legend = FALSE) +
  labs(x = "Especie",
       y = "Masa corporal (g)") +
  theme_minimal()
```

Opciones de figura

Opción Descripción
fig-cap Pie de figura (aparece debajo de la imagen)
fig-width Ancho en pulgadas (por defecto: 7)
fig-height Alto en pulgadas (por defecto: 5)
fig-align Alineación: left, center, right
fig-alt Texto alternativo para lectores de pantalla
out-width Ancho en el documento como porcentaje ("70%")

fig-alt no aparece en el documento visible, pero es leído por tecnologías de asistencia. Añadirlo es buena práctica: fig-alt: "Diagrama de caja que muestra la distribución de masa corporal de tres especies de pingüinos".

Actividad 1 · 8 min

Añade una figura con caption

En tu documento mi_reporte.qmd, inserta o modifica un bloque de código con una figura de ggplot2:

  1. Añade #| fig-cap: "..." con una descripción de la figura
  2. Ajusta #| fig-width: y #| fig-height: hasta que la figura se vea bien
  3. Añade #| echo: false para que solo aparezca la figura, sin el código
  4. Renderiza y comprueba el resultado en el navegador

Parte 2

Referencias cruzadas para figuras

fig-: el prefijo para referencias

Igual que tbl- para tablas, las figuras usan el prefijo fig- en el label:

En el bloque de código:

```{r}
#| label: fig-masas
#| fig-cap: "Masa corporal por especie de pingüino"
#| echo: false

pinguinos |>
  ggplot(aes(x = species,
             y = body_mass_g,
             fill = species)) +
  geom_boxplot(show.legend = FALSE) +
  ...
```

En el texto:

Como se observa en la @fig-masas, la especie Gentoo tiene la mayor masa corporal.

Quarto numera las figuras automáticamente en documentos (HTML, PDF, Word). El prefijo fig- en el label es obligatorio y la figura debe tener fig-cap para que la referencia cruzada funcione.

Resultado renderizado:

Como se observa en la Figura 1, la especie Gentoo tiene la mayor masa corporal.

Actividad 2 · 8 min

Referencias cruzadas en tu documento

En tu documento mi_reporte.qmd:

  1. Añade #| label: fig-xxx a tu figura (reemplaza xxx con un nombre corto)
  2. Escribe @fig-xxx en el texto para citar la figura
  3. Si tienes una tabla gt con #| label: tbl-xxx, cítala con @tbl-xxx
  4. Renderiza y verifica que los números y los enlaces aparecen correctamente

Parte 3

Composición de figuras con patchwork

Varias figuras con patchwork

patchwork combina objetos ggplot2 con operadores simples y etiqueta los paneles automáticamente:

```{r}
#| label: fig-paneles
#| fig-cap: "Variables morfológicas por especie. (a) Masa corporal; (b) largo del pico."
#| echo: false

library(patchwork)

p1 <- pinguinos |>
  ggplot(aes(x = species, y = body_mass_g,
             fill = species)) +
  geom_boxplot(show.legend = FALSE) +
  labs(x = NULL, y = "Masa (g)") +
  theme_minimal()

p2 <- pinguinos |>
  ggplot(aes(x = species, y = bill_length_mm,
             fill = species)) +
  geom_boxplot(show.legend = FALSE) +
  labs(x = NULL, y = "Pico (mm)") +
  theme_minimal()

p1 + p2 +
  plot_annotation(tag_levels = "a")
```

Figura 1. Variables morfológicas por especie. (a) Masa corporal; (b) largo del pico.

Figura 1. Variables morfológicas por especie. (a) Masa corporal; (b) largo del pico.

Imágenes externas: include_graphics()

Para incluir una imagen desde disco o desde una URL:

Con knitr::include_graphics() (permite referencia cruzada):

```{r}
#| label: fig-esquema
#| fig-cap: "Estructura del proyecto"
#| out-width: "60%"
#| fig-align: center

knitr::include_graphics("imagenes/esquema.png")
```

Con Markdown (simple, pero sin referencia cruzada):

![Descripción](imagenes/logo.png){width="60%"}

knitr::include_graphics() es la opción correcta cuando necesitas citar la imagen en el texto con @fig-xxx. La ruta va relativa al archivo .qmd.

out-width controla el tamaño de visualización como porcentaje del ancho disponible, sin afectar la resolución original de la imagen.

Parte 4

El documento integrado

Opciones globales de ejecución

En lugar de repetir las mismas opciones en cada bloque, defínelas una sola vez en el YAML:

---
title: "Mi análisis"
format: html
execute:
  echo: false
  warning: false
  message: false
---

Con echo: false global, ningún bloque mostrará el código. Para anularlo en un bloque concreto, agrega la opción directamente en ese bloque:

```{r}
#| echo: true
summary(pinguinos)
```
Opción global Efecto
echo: false Oculta el código en todos los bloques
warning: false Suprime advertencias
message: false Suprime mensajes de paquetes
eval: false No ejecuta ningún bloque
cache: true Guarda resultados en caché

Las opciones del YAML son los valores por defecto. Las opciones en un bloque individual siempre las anulan.

Estructura de un documento completo

Un documento bien organizado integra todos los elementos que hemos visto:

---
title, author, date, format, bibliography, csl, execute
---
```{r} setup ← #| include: false · cargar paquetes y datos
# Introducción ← texto con código en línea
# Método ← descripción de datos y análisis
# Resultados
figuras con @fig-xxx · tablas con @tbl-xxx · valores con `r ...`
# Conclusiones
# Referencias ← generadas automáticamente por Quarto

El bloque setup carga paquetes y datos antes que cualquier otro bloque. #| include: false suprime el bloque por completo: ni el código, ni los resultados, ni los mensajes de carga aparecen en el documento. Es distinto de #| echo: false, que oculta el código pero sí muestra los resultados.

Ejemplo descargable con figuras, tablas, referencias cruzadas y código en línea: ejemplo_reporte.qmd · referencias.bib

Actividad 3 · 10 min

Organiza y completa tu documento

Dale a tu mi_reporte.qmd la estructura de un documento completo:

  1. Añade execute: echo: false al YAML (código oculto por defecto)
  2. Crea un bloque setup al inicio con #| include: false que cargue todos los paquetes y datos
  3. Verifica que tienes: secciones (#), al menos una figura con @fig-, una tabla con @tbl- y al menos una cita con @clave
  4. Renderiza sin errores y revisa que todas las referencias son correctas

Parte 5

Publicación

Un archivo para compartir

Por defecto, un documento HTML de Quarto genera varios archivos auxiliares. Para compartirlo como un único archivo portable:

---
format:
  html:
    embed-resources: true
---

Esto incrusta CSS, JavaScript e imágenes directamente en el .html, que se puede enviar por correo o abrir sin conexión desde cualquier ordenador.

En versiones anteriores de Quarto la opción era self-contained: true, que sigue funcionando. La opción actual y recomendada es embed-resources: true.

Posit Connect Cloud: publicar en la web

Posit Connect Cloud es el servicio gratuito de Posit para publicar documentos Quarto directamente desde RStudio:

  1. Crea una cuenta en connect.posit.cloud
  2. Con tu mi_reporte.qmd abierto, haz clic en el botón Publish de la barra del editor (esquina superior derecha, icono de flecha azul)
  3. Selecciona Posit Connect CloudPublish Document…
  4. La primera vez pedirá que inicies sesión en el navegador
  5. RStudio sube el documento y abre la URL pública

Posit Connect Cloud reemplaza a Quarto Pub, que dejó de aceptar nuevos proyectos. El proceso de publicación es idéntico: el botón Publish de RStudio gestiona todo.

Otras opciones de publicación

Servicio Ideal para
Posit Connect Cloud Documentos individuales o colecciones, publicación gratuita con un clic desde RStudio
GitHub Pages Sitios completos con control de versiones; lo que usa el sitio de este curso
Posit Connect Versión institucional o corporativa con control de acceso y despliegue privado
Netlify Sitios con dominio personalizado y despliegue continuo

Para este curso, Posit Connect Cloud es la opción más directa. Si ya usas GitHub y quieres publicar más contenido, GitHub Pages es el siguiente paso natural (es lo que usa el sitio de este curso).

Actividad final · 20 min

Publica tu documento en Posit Connect Cloud

  1. Crea una cuenta en connect.posit.cloud si aún no tienes una
  2. Asegúrate de que tu mi_reporte.qmd renderiza sin errores
  3. Haz clic en el botón Publish (esquina superior derecha del editor) → Posit Connect CloudPublish Document…
  4. Copia la URL pública y compártela con alguien o ábrela desde tu celular

Antes de terminar…

Quiz rápido

Quiz · 1 de 3

¿Qué opción de bloque añade un pie de figura en el documento y hace posible citarla con @fig-xxx?

    1. fig-title
    1. fig-label
    1. fig-cap
    1. caption

c) fig-cap añade el pie de figura y, junto con label: fig-xxx, habilita la referencia cruzada. Sin fig-cap no se genera la referencia aunque exista el label.

Quiz · 2 de 3

¿Qué función de patchwork añade etiquetas de panel (a, b, c…) a la composición?

    1. label_panels("a")
    1. tag_plots(letters)
    1. plot_annotation(tag_levels = "a")
    1. annotate(tag = "a")

c) plot_annotation(tag_levels = "a") añade las etiquetas (a), (b), (c)… a cada panel. Se puede cambiar a números con "1", romanos con "i", o mayúsculas con "A".

Quiz · 3 de 3

Quieres que tu documento HTML sea un único archivo portable que no dependa de archivos externos. ¿Qué opción usas en el YAML?

    1. standalone: true
    1. embed-resources: true
    1. format: single-html
    1. output: bundle

b) embed-resources: true incrusta todos los recursos (CSS, JavaScript, imágenes) en el propio archivo .html. El resultado es un único archivo que se puede compartir o abrir sin conexión.

Hasta la próxima sesión

¡Gracias!

jdleongomez.github.io/curso-r