R Markdown

Llibreries necessàries

library(readxl)
library(tidyverse)
library(RColorBrewer)
library(sf)
library(scales)
library(maps)
library(tidytext)
library(ggwordcloud)

Base de dades

dades_unesco <- read_xls("whc_sites.xls")

Exercici 1: Anàlisi Gràfica Descriptiva

Gràfic 1.1: Gràfic de columnes (vertical)

En aquest primer gràfic s’analitza la distribució del tipus (cultural, natural o mixt) dels patrimonis de la humanitat segons la UNESCO.S’utilitza una paleta de colors personalitzada del paquet RColorBrewer.

dades_unesco %>%
  count(category) %>%
  ggplot(aes(x = reorder(category, -n), y = n, fill = category)) +
  geom_col() +
  scale_fill_brewer(palette = "Pastel2",
                    labels = c("Cultural", "Natural", "Mixt")) +
  labs(title = "Gràfic de barres",
       subtitle = "Distribució per categoria",
       x = "Categoria",
       y = "Nombre de llocs",
       fill = "Categoria") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, face = "italic"),
    axis.text.x = element_blank()
  )

Gràfic 1.2: Gràfic de línies

El gràfic de línies següent permet observar l’evolució del nombre d’incorporació de nous llocs de forma cronològica.

dades_unesco %>%
  count(date_inscribed) %>%
  ggplot(aes(x = date_inscribed, y = n)) +
  geom_line(linewidth = 1.2, color = "#B3E2CD") +
  labs(title = "Gràfic de línies",
       subtitle = "Evolució del nombre de llocs inscrits",
       x = "Any d'inscripció", 
       y = "Nombre total de llocs") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, face = "italic")
  )

Gràfic 1.3: Gràfic de barres (horitzontal)

Aquest gràfic ordena les diferents regions segons el seu volum de llocs de patrimoni de l’humanitat. S’ha realitzat una transformació de les dades per agrupar i aïllar aquells elements catalogats com a transfronterers.

dades_unesco %>%
  mutate(region_en = if_else(str_detect(region_en, ","), "Fronteres", region_en)) %>%
  count(region_en) %>%
  ggplot(aes(x = n, y = reorder(region_en, n), fill = region_en)) +
  geom_col(show.legend = FALSE) +
  scale_fill_brewer(palette = "Pastel2")+ 
  scale_y_discrete(labels = c(
    "Fronteres",
    "Estats Àrabs",
    "Àfrica",
    "Amèrica Llatina i el Carib",
    "Àsia i el Pacífic",
    "Europa i Amèrica del Nord"
    )) +
  labs (title = "Gràfic de columnes",
        subtitle = "Nombre de llocs per regió",
        caption = "Nota: 'Fronteres' engloba els llocs transfronterers d'Àsia-Pacífic/Europa i Àsia-Pacífic/Europa/Latino Amèrica.",
        x = "Nombre de llocs",
        y = "Regions",
        fill = "Regions") + 
  theme_minimal() +
  theme (
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, face = "italic"),
    plot.caption = element_text(hjust = 0.5)
  )

Exercici 2: Mapes

Mapa 2.1: Mapa de calor

S’ha generat una matriu d’unió espacial a través d’un left join creuant la informació geomètrica global del paquet maps amb el primer país extret de la variable states_name_en. Les tonalitats mesuren el nombre de llocs de patrimoni de l’humanitat acumulats per cada país.

mon_dades <- map_data("world")

recompte_paisos <- dades_unesco %>%
  filter(!is.na(states_name_en)) %>%
  mutate(primer_pais = str_split_i(states_name_en, ",", 1)) %>%
  count(primer_pais, name = "num_llocs")

mapa_calor_dades <- mon_dades %>%
  left_join(recompte_paisos, by = c("region" = "primer_pais")) %>%
  mutate(num_llocs = if_else(is.na(num_llocs), 0, num_llocs))

ggplot(mapa_calor_dades, aes(x = long, y = lat, group = group, fill = num_llocs)) +
  geom_polygon(color = "white", linewidth = 0.1) +
  scale_fill_gradient(low = "#CBD5E8", high = "#7570B3", name = "Llocs UNESCO")+
  coord_fixed(1.3)+
  theme_minimal()+
  labs(
    title = "MAPA 1",
    subtitle = "Concentració de llocs per país",
    x = "Longitud",
    y = "Latitud") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, face = "italic"),
    legend.position = "bottom"
  )

Mapa 2.2: Mapa de calor

A diferència de l’anterior, aquest gràfic utilitza les coordenades pures de longitud i latitud recollides per plasmar la posició exacta de cada un dels monuments de la base de dades, utilitzant codis de color per diferenciar la categoria.

dades_unesco %>%
  filter(!is.na(latitude), !is.na(longitude)) %>%
  ggplot() +
  geom_polygon(data = mon_dades, 
               aes(x = long, y = lat, group = group), 
               fill = "#CBD5E8", 
               color = "white", 
               linewidth = 0.2) +
  geom_point(data = dades_unesco %>% filter(!is.na(latitude), !is.na(longitude)),
             aes(x = longitude, y = latitude, color = category), 
             alpha = 0.7, size = 0.6) +
  scale_color_manual(values = c("#7570B3", "#F781BF", "#FFF95B"), 
                     labels = c("Cultural", "Natural", "Mixt")) +
  coord_fixed(1.3) +
  theme_minimal() +
  labs(title = "MAPA 2",
       subtitle = "Distribució del Patrimoni Mundial per Categoria",
       x = "Longitud",
       y = "Latitud",
       color = "Categoria") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, face = "italic"),
    legend.position = "bottom"
  )

Exercici 3: Anàlisi textual

A partir de la columna short_description_es s’ha fet una fragmentació (tokenització) de les paraules. Per obtenir les paraules amb autèntic contingut semàntic, s’ha aplicat un llistat de paraules buides en espanyol i s’ha realitzat una neteja manual d’urgència de codis rars HTML (p, br, amp, etc.) i d’entitats de caràcters d’accentuació (oacute, iacute, aacute, entre d’altres).

paraules_buides_es <- get_stopwords(language = "es")

text_analitzat <- dades_unesco %>%
  filter(!is.na(short_description_es)) %>%
  unnest_tokens(word, short_description_es) %>%
  anti_join(paraules_buides_es, by = "word") %>%
  filter(!word %in% c("del", "al", "más", "sus", "como", "entre", "esta", "este", "son", "se", 
                      "p", "br", "em", "strong", "li", "ul", "amp", "href", "class",
                      "oacute", "iacute", "aacute", "eacute", "uacute", "ntilde", "quot", "nbsp", "n", "m", "s")) %>%
  count(word, sort = TRUE)

Finalment, mostrem el resultat del processat textual utilitzant un gràfic de tipus Wordcloud amb els 80 conceptes més repetits.

text_analitzat %>%
  head(80) %>% 
  ggplot(aes(label = word, size = n, color = n)) +
  geom_text_wordcloud_area(rm_outside = TRUE) +
  scale_size_area(max_size = 30) +
  scale_color_gradient(low = "#7570B3", high = "#F781BF") +
  theme_void() +
  labs(title = "Exercici 4: Anàlisi de text",
       subtitle = "Núvol de les paraules més recurrents a les descripcions del Patrimoni Mundial")+
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
    plot.subtitle = element_text(hjust = 0.5, face = "italic", size = 11),
    plot.margin = margin(20, 20, 20, 20)
    )

Conclusions Generals

Mitjançant la combinació de les diferents tècniques establertes en el document podem extreure que:

  • Desproporció tipològica: Els llocs dedicats al patrimoni Cultural són significativament superiors en volum respecte als espais Naturals i Mixts.

  • Concentració espacial: Els mapes demostren una distribució desigual a nivell global, amb una elevada taxa de concentració a la regió d’Europa i Amèrica del Nord.

  • Paraules clau: El núvol de paraules confirma que la descripció oficial de la UNESCO es basa en conceptes històrics i urbans, destacant termes com “siglo”, “ciudad”, “histórico” o “arquitectura”.