Evolució de la temperatura a l’observatori Fabra 2009-2023

R
ggplot2
clima
tufte
Author

Marc Bosch

Published

February 8, 2023

El meteocat ofereix en obert les dades de tots els observatoris meteorològics de Catalunya d’entre 2009 i avui, actualitzades en directe. Avui aprofito per presentar l’evolució de la temperatura de cada mes entre 2009 i 2022 a l’Observatori Fabra. De pas, aprofito per compartir una manera diferent de presentar els gràfics de caixa i bigotis segons les idees de l’estadístic i politòleg Edward Tufte. Però anem a pams, primer, baixem les dades del portal de la Generalitat i mirem quina pinta fan.

Show the code
library(tidyverse)
library(httr)
library(jsonlite)
library(ggthemes)
library(palmerpenguins)
Show the code
temps <- GET("https://analisi.transparenciacatalunya.cat/resource/nzvn-apee.json?codi_variable=32&codi_estacio=D5&$limit=1000000") |> 
  content(as = "text") |> 
  fromJSON()
knitr::kable(head(temps[,2:5]))
codi_estacio codi_variable data_lectura valor_lectura
D5 32 2009-01-01T00:00:00.000 9.1
D5 32 2009-01-01T00:30:00.000 9.6
D5 32 2009-01-01T01:00:00.000 9.7
D5 32 2009-01-01T01:30:00.000 9.9
D5 32 2009-01-01T02:00:00.000 10
D5 32 2009-01-01T02:30:00.000 10.2

Veiem el codi de l’estació (Observatori Fabra), el codi de la variable (temperatura), la data i l’hora en què s’ha pres la mesura (un cop cada mitja hora) i el valor (és a dir, la temperatura registrada).

I un cop les tenim, fem el gràfic. Per representar la informació he triat fer un gràfic de caixa i bigotis, que ens indica on són el mínim, el primer quartil, la mediana, el tercer quartil i el màxim. Els valors extrems (és a dir, molt més allunyats dels mínims i màxims), els representa com a punts per a mostrar que estan molt allunyats de la distribució més habitual dels gràfics. Normalment estem acostumats a que facin una pinta així.

Show the code
theme_set(ggthemes::theme_tufte(base_family = "Roboto condensed")) # triem el tema del gràfic
ggplot(penguins, aes(x = species, group = species, y = bill_length_mm)) + 
  geom_boxplot() + 
  theme(axis.title.x = element_blank(),
        axis.title.y = element_blank())

Les dades fan referència als animals preferits dels programadors d’R, els pingüins.

Però la veritat, jo el trobo poc estètic, i m’agrada més la reinterpretació que en fa Edward Tufte. Igual que en el model tradicional, trobem una línia que representa la distància entre el mínim i el primer quartil i el màxim i el tercer quartil respectivament, però la caixa queda substituida per un espai en blanc i la mediana per un punt. Molt més elegant i igual d’informatiu, si m’ho pregunteu.

Show the code
ggplot(penguins, aes(x = species, group = species, y = bill_length_mm)) + 
  geom_tufteboxplot(stat = "boxplot") + 
  theme(axis.title.x = element_blank(),
        axis.title.y = element_blank())

Show the code
p <- temps |> 
  as_tibble() |> 
  mutate(valor_lectura = as.numeric(valor_lectura),
         data_lectura = lubridate::as_datetime(data_lectura)) |> 
  mutate(mes = lubridate::month(data_lectura, label = TRUE, locale = Sys.getlocale("LC_TIME")),
         any = (lubridate::year(data_lectura)),
         mes = str_remove(mes, "de "),
         mes = str_remove(mes, "d’"),
         mes = factor(mes, levels = c("gen", "febr", "març", "abr", "maig", "juny",
                                      "jul", "ag", "set", "oct", "nov", "des"))) |> 
  filter(any < 2023) |> 
  ggplot(aes(x = any, y = valor_lectura)) +
  geom_smooth(method = "lm",
              lwd = 0.5,
              se = FALSE) + 
  ggthemes::geom_tufteboxplot(aes(group = any), stat = "boxplot", outlier.size = 0.25) + 
  stat_summary(fun = mean, fun.args = list(na.rm = TRUE), aes(group = any), 
               geom = "point", shape = 4, colour = "red") + 
  facet_wrap(~mes,
             scales = "free_x") + 
  ggthemes::theme_tufte(base_family = "Roboto Condensed") + 
  theme(axis.title.x = element_blank(),
        axis.title.y = element_blank())
p

Evolució de la temperatura per mesos 2009-2022. El punt negre indica la mediana, la x vermella la mitjana, i la línia blava la tendència entre 2009 i 2022.

Veiem que els febrers i els desembres són els mesos que més s’han escalfat entre 2009 i 2022, seguits de prop de maigs, junys, juliols i, un pèl menys, setembres. La primavera i la tardor s’avancen cada cop més, com ja sabem de sobres.