Víctor Gauto
  • Tidytuesday
  • Publicaciones
  • Mapas de Argentina
  • Visualizaciones
  • Mi CV

Sitio en construcción

Contenido

  • Paquetes
  • Estilos
  • Epígrafe
  • Datos
  • Procesamiento
  • Figura
  • Editar esta página
  • Informar sobre problema

Semana 07

  • Mostrar todo el código
  • Ocultar todo el código

  • Ver el código fuente
geom_spatvector
Autor

Víctor Gauto

Fecha de publicación

14 de marzo de 2026

Cantidad máxima de ovejas en Nueva Zelanda.

Semana 07, 2026

Paquetes

Ocultar código
library(glue)
library(ggtext)
library(showtext)
library(tidyverse)

Estilos

Colores.

Ocultar código
c1 <- "#54cabe"
c2 <- "#dea9cc"
c3 <- "white"
c4 <- "grey10"

Fuentes: Ubuntu y JetBrains Mono.

Ocultar código
font_add(
  family = "ubuntu",
  regular = "././fuente/Ubuntu-Regular.ttf",
  bold = "././fuente/Ubuntu-Bold.ttf",
  italic = "././fuente/Ubuntu-Italic.ttf"
)

font_add(
  family = "jet",
  regular = "././fuente/JetBrainsMonoNLNerdFontMono-Regular.ttf"
)

showtext_auto()
showtext_opts(dpi = 300)

Epígrafe

Ocultar código
fuente <- glue(
  "Datos: <span style='color:{c1};'><span style='font-family:jet;'>",
  "{{<b>tidytuesdayR</b>}}</span> semana 07, ",
  "<b>StatsNZ, Agricultural Production Statistics</b>.</span>"
)

autor <- glue("<span style='color:{c1};'>**Víctor Gauto**</span>")
icon_twitter <- glue("<span style='font-family:jet;'>&#xf099;</span>")
icon_instagram <- glue("<span style='font-family:jet;'>&#xf16d;</span>")
icon_github <- glue("<span style='font-family:jet;'>&#xf09b;</span>")
icon_mastodon <- glue("<span style='font-family:jet;'>&#xf0ad1;</span>")
icon_bsky <- glue("<span style='font-family:jet;'>&#xe28e;</span>")
usuario <- glue("<span style='color:{c1};'>**vhgauto**</span>")
sep <- glue("**|**")

mi_caption <- glue(
  "{fuente}<br>{autor} {sep} {icon_github} {icon_twitter} {icon_instagram} ",
  "{icon_mastodon} {icon_bsky} {usuario}"
)

Datos

Ocultar código
tuesdata <- tidytuesdayR::tt_load(2026, 07)
dataset <- tuesdata$dataset

Procesamiento

Me interesa crear un mapa con puntos por cada oveja durante su máxima cantidad sobre Nueva Zelanda.

Mapa de Nueva Zelanda para ubicar los puntos.

Ocultar código
nz <- rgeoboundaries::geoboundaries(country = "New Zealand", adm_lvl = 0) |>
  sf::st_geometry() |>
  sf::st_transform(27200)

Conservo los datos para el total de ovejas, la máxima cantidad disponible y aplico un factor de escala para luego incorporar los puntos.

Ocultar código
escala <- 1e3

d <- dataset |>
  filter(measure == "Total Sheep") |>
  slice_max(order_by = year_ended_june, n = 1, by = measure) |>
  mutate(r = round(value / escala))

A partir del vector de Nueva Zelanda ubico la cantidad de puntos, afectado por la escala, de manera aleatoria.

Ocultar código
set.seed(2026)
p <- sf::st_sample(nz, d$r) |>
  terra::vect()

Figura

Título, leyenda indicando el factor de escala y formato a los números.

Ocultar código
mi_titulo <- glue(
  "En 2024 la producción de<br><b style='color:{c1}'>ovejas</b> en 
  <b style='color: {c2};'>Nueva Zelanda</b><br>alcanzó los 
  **{cantidad_label}**<br>ejemplares."
)

mi_leyenda <- glue(
  "<span style='color: {c1};'>&#xf444;</span> &#xf01fc; 
  <span style='color: {c2};'>&#xf0cc6;</span> &#xf467;"
)

cantidad_label <- format(d$cantidad, big.mark = ".", decimal.mark = ",")

escala_label <- format(escala, big.mark = ".", decimal.mark = ",")

Figura.

Ocultar código
g <- ggplot() +
  tidyterra::geom_spatvector(data = nz, fill = c3, color = NA) +
  tidyterra::geom_spatvector(data = p, size = .3, alpha = .5, color = c1) +
  annotate(
    geom = "richtext",
    # x = I(.4),
    # y = I(.2),
    x = I(.02),
    y = I(.7),
    label = mi_titulo,
    hjust = 0,
    vjust = 1,
    size = 8,
    family = "ubuntu",
    fill = NA,
    color = c3,
    label.color = NA
  ) +
  annotate(
    geom = "richtext",
    x = I(c(.875, 1)),
    y = I(c(1, .991)),
    label = c(mi_leyenda, escala_label),
    hjust = 1,
    vjust = 1,
    size = c(18, 10),
    family = "jet",
    fill = NA,
    color = c3,
    label.color = NA
  ) +
  labs(caption = mi_caption) +
  ggthemes::theme_few(base_family = "ubuntu") +
  theme_sub_plot(
    background = element_rect(fill = c2, color = NA),
    margin = margin_auto(30),
    caption = element_markdown(
      color = c2,
      margin = margin(t = -35, r = 10),
      size = 15,
      lineheight = 1.2
    )
  ) +
  theme_sub_panel(
    background = element_rect(fill = c4, color = NA),
    border = element_blank()
  ) +
  theme_sub_axis(text = element_blank(), ticks = element_blank())

Guardo.

Ocultar código
ggsave(
  plot = g,
  filename = "tidytuesday/2026/semana_07.png",
  width = 30,
  height = 31.3,
  units = "cm"
)
Subir
Ejecutar el código
---
format:
  html:
    code-fold: show
    code-summary: "Ocultar código"
    code-line-numbers: false
    code-annotations: false
    code-link: true
    code-tools:
        source: true
        toggle: true
        caption: "Código"
    code-overflow: scroll
    page-layout: full
editor_options:
  chunk_output_type: console
categories:
  - geom_spatvector
execute:
  eval: false
  echo: true
  warning: false
title: "Semana 07"
date: last-modified
author: Víctor Gauto
---

Cantidad máxima de ovejas en Nueva Zelanda.

::: {.column-page-right}

![Semana 07, 2026](semana_07.png)

:::

## Paquetes

```{r}
library(glue)
library(ggtext)
library(showtext)
library(tidyverse)
```

## Estilos

Colores.

```{r}
c1 <- "#54cabe"
c2 <- "#dea9cc"
c3 <- "white"
c4 <- "grey10"
```

Fuentes: Ubuntu y JetBrains Mono.

```{r}
font_add(
  family = "ubuntu",
  regular = "././fuente/Ubuntu-Regular.ttf",
  bold = "././fuente/Ubuntu-Bold.ttf",
  italic = "././fuente/Ubuntu-Italic.ttf"
)

font_add(
  family = "jet",
  regular = "././fuente/JetBrainsMonoNLNerdFontMono-Regular.ttf"
)

showtext_auto()
showtext_opts(dpi = 300)
```

## Epígrafe

```{r}
fuente <- glue(
  "Datos: <span style='color:{c1};'><span style='font-family:jet;'>",
  "{{<b>tidytuesdayR</b>}}</span> semana 07, ",
  "<b>StatsNZ, Agricultural Production Statistics</b>.</span>"
)

autor <- glue("<span style='color:{c1};'>**Víctor Gauto**</span>")
icon_twitter <- glue("<span style='font-family:jet;'>&#xf099;</span>")
icon_instagram <- glue("<span style='font-family:jet;'>&#xf16d;</span>")
icon_github <- glue("<span style='font-family:jet;'>&#xf09b;</span>")
icon_mastodon <- glue("<span style='font-family:jet;'>&#xf0ad1;</span>")
icon_bsky <- glue("<span style='font-family:jet;'>&#xe28e;</span>")
usuario <- glue("<span style='color:{c1};'>**vhgauto**</span>")
sep <- glue("**|**")

mi_caption <- glue(
  "{fuente}<br>{autor} {sep} {icon_github} {icon_twitter} {icon_instagram} ",
  "{icon_mastodon} {icon_bsky} {usuario}"
)
```

## Datos

```{r}
tuesdata <- tidytuesdayR::tt_load(2026, 07)
dataset <- tuesdata$dataset
```

## Procesamiento

Me interesa crear un mapa con puntos por cada oveja durante su máxima cantidad sobre Nueva Zelanda.

Mapa de Nueva Zelanda para ubicar los puntos.

```{r}
nz <- rgeoboundaries::geoboundaries(country = "New Zealand", adm_lvl = 0) |>
  sf::st_geometry() |>
  sf::st_transform(27200)
```

Conservo los datos para el total de ovejas, la máxima cantidad disponible y aplico un factor de escala para luego incorporar los puntos.

```{r}
escala <- 1e3

d <- dataset |>
  filter(measure == "Total Sheep") |>
  slice_max(order_by = year_ended_june, n = 1, by = measure) |>
  mutate(r = round(value / escala))
```

A partir del vector de Nueva Zelanda ubico la cantidad de puntos, afectado por la escala, de manera aleatoria.

```{r}
set.seed(2026)
p <- sf::st_sample(nz, d$r) |>
  terra::vect()
```

## Figura

Título, leyenda indicando el factor de escala y formato a los números.

```{r}
mi_titulo <- glue(
  "En 2024 la producción de<br><b style='color:{c1}'>ovejas</b> en 
  <b style='color: {c2};'>Nueva Zelanda</b><br>alcanzó los 
  **{cantidad_label}**<br>ejemplares."
)

mi_leyenda <- glue(
  "<span style='color: {c1};'>&#xf444;</span> &#xf01fc; 
  <span style='color: {c2};'>&#xf0cc6;</span> &#xf467;"
)

cantidad_label <- format(d$cantidad, big.mark = ".", decimal.mark = ",")

escala_label <- format(escala, big.mark = ".", decimal.mark = ",")
```

Figura.

```{r}
g <- ggplot() +
  tidyterra::geom_spatvector(data = nz, fill = c3, color = NA) +
  tidyterra::geom_spatvector(data = p, size = .3, alpha = .5, color = c1) +
  annotate(
    geom = "richtext",
    # x = I(.4),
    # y = I(.2),
    x = I(.02),
    y = I(.7),
    label = mi_titulo,
    hjust = 0,
    vjust = 1,
    size = 8,
    family = "ubuntu",
    fill = NA,
    color = c3,
    label.color = NA
  ) +
  annotate(
    geom = "richtext",
    x = I(c(.875, 1)),
    y = I(c(1, .991)),
    label = c(mi_leyenda, escala_label),
    hjust = 1,
    vjust = 1,
    size = c(18, 10),
    family = "jet",
    fill = NA,
    color = c3,
    label.color = NA
  ) +
  labs(caption = mi_caption) +
  ggthemes::theme_few(base_family = "ubuntu") +
  theme_sub_plot(
    background = element_rect(fill = c2, color = NA),
    margin = margin_auto(30),
    caption = element_markdown(
      color = c2,
      margin = margin(t = -35, r = 10),
      size = 15,
      lineheight = 1.2
    )
  ) +
  theme_sub_panel(
    background = element_rect(fill = c4, color = NA),
    border = element_blank()
  ) +
  theme_sub_axis(text = element_blank(), ticks = element_blank())
```

Guardo.

```{r}
ggsave(
  plot = g,
  filename = "tidytuesday/2026/semana_07.png",
  width = 30,
  height = 31.3,
  units = "cm"
)
```

Creado con y

Víctor Gauto

  • Editar esta página
  • Informar sobre problema