Introducció

Aquest informe analitza les dades dels llocs Patrimoni de la Humanitat de la UNESCO de l’any 2025. L’objectiu és estudiar aquestes dades amb R i presentar els resultats amb gràfics, mapes i una anàlisi de text.

Les dades provenen del fitxer whc-sites-2025.xlsx. Aquest fitxer inclou informació com el nom del lloc, el país, la regió, la categoria del patrimoni, l’any d’inscripció, les coordenades i una breu descripció del lloc en diferents llengües.

Preparació

En aquest apartat es carreguen els paquets i les dades.

# install.packages(c("tidyverse", "readxl", "maps", "tidytext", "wordcloud2", "stopwords"))

library(tidyverse)
library(readxl)
library(maps)
library(tidytext)
library(wordcloud2)
ruta <- "/Users/marcchavarria/Desktop/Big Data/Exercici 2"

dades <- read_excel(file.path(ruta, "whc-sites-2025.xlsx"))

glimpse(dades)
## Rows: 1,248
## Columns: 49
## $ unique_number        <dbl> 230, 234, 1590, 1563, 111, 198, 209, 212, 214, 21…
## $ id_no                <dbl> 208, 211, 569, 570, 102, 179, 188, 191, 193, 194,…
## $ rev_bis              <chr> "Rev", "Rev", "Bis", "ter", NA, NA, NA, NA, NA, N…
## $ name_en              <chr> "Cultural Landscape and Archaeological Remains of…
## $ name_fr              <chr> "Paysage culturel et vestiges archéologiques de l…
## $ name_es              <chr> "Paisaje cultural y vestigios arqueológicos del V…
## $ name_ru              <chr> "Культурный ландшафт и археологические находки в …
## $ name_ar              <chr> "المنظر الثقافي والبقايا الأثرية في وادي باميان",…
## $ name_zh              <chr> "巴米扬山谷的文化景观和考古遗迹", "查姆回教寺院尖塔和考古遗址", NA, "布特林特", "…
## $ short_description_en <chr> "<p>The cultural landscape and archaeological rem…
## $ short_description_fr <chr> "<p>Le paysage culturel et les vestiges archéolog…
## $ short_description_es <chr> "<p>Este sitio es un exponente de las creaciones …
## $ short_description_ru <chr> "<p>Культурный ландшафт и археологические находки…
## $ short_description_ar <chr> "<p dir=\"rtl\">يمثّل المنظر الثقافي والبقايا الأث…
## $ short_description_zh <chr> "<p>巴米扬山谷的文化景观和考古遗址向世人展示了从公元1世纪至13世纪期间以古代巴克特里亚文化为…
## $ justification_en     <chr> "<p><em>Criterion (i):</em> The Buddha statues an…
## $ justification_fr     <chr> "<p><em>Critère (i):</em> Les statues de Bouddha …
## $ date_inscribed       <dbl> 2003, 2002, 2005, 1992, 1980, 1982, 1982, 1982, 1…
## $ secondary_dates      <chr> NA, NA, "2008", "1999", NA, NA, NA, NA, NA, NA, N…
## $ danger               <dbl> 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ date_end             <dbl> NA, NA, NA, 2005, NA, NA, NA, NA, 2006, NA, NA, N…
## $ danger_list          <chr> "Y 2003", "Y 2002", NA, "P 1997-2005", NA, NA, NA…
## $ longitude            <dbl> 67.825250, 64.515889, 20.140833, 20.020950, 4.786…
## $ latitude             <dbl> 34.846940, 34.396417, 40.074167, 39.745732, 35.81…
## $ area_hectares        <dbl> 158.9265, 70.0000, 58.9000, NA, 150.0000, 7200000…
## $ C1                   <dbl> 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ C2                   <dbl> 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0…
## $ C3                   <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1…
## $ C4                   <dbl> 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0…
## $ C5                   <dbl> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0…
## $ C6                   <dbl> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ N7                   <dbl> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0…
## $ N8                   <dbl> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0…
## $ N9                   <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ N10                  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ criteria_txt         <chr> "(i)(ii)(iii)(iv)(vi)", "(ii)(iii)(iv)", "(iii)(i…
## $ category             <chr> "Cultural", "Cultural", "Cultural", "Cultural", "…
## $ category_short       <chr> "C", "C", "C", "C", "C", "C/N", "C", "C", "C", "C…
## $ states_name_en       <chr> "Afghanistan", "Afghanistan", "Albania", "Albania…
## $ states_name_fr       <chr> "Afghanistan", "Afghanistan", "Albanie", "Albanie…
## $ states_name_es       <chr> "Afganistán", "Afganistán", "Albania", "Albania",…
## $ states_name_ru       <chr> "Афганистан", "Афганистан", "Албания", "Албания",…
## $ states_name_ar       <chr> "أفغانستان", "أفغانستان", "ألبانيا", "ألبانيا", "…
## $ states_name_zh       <chr> "阿富汗", "阿富汗", "阿尔巴尼亚", "阿尔巴尼亚", "阿尔及利亚", "阿尔及利亚",…
## $ region_en            <chr> "Asia and the Pacific", "Asia and the Pacific", "…
## $ region_fr            <chr> "Asie et Pacifique", "Asie et Pacifique", "Europe…
## $ iso_code             <chr> "af", "af", "al", "al", "dz", "dz", "dz", "dz", "…
## $ udnp_code            <chr> "afg", "afg", "alb", "alb", "dza", "dza", "dza", …
## $ transboundary        <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
head(dades)
## # A tibble: 6 × 49
##   unique_number id_no rev_bis name_en    name_fr name_es name_ru name_ar name_zh
##           <dbl> <dbl> <chr>   <chr>      <chr>   <chr>   <chr>   <chr>   <chr>  
## 1           230   208 Rev     Cultural … Paysag… Paisaj… Культу… المنظر… 巴米扬山谷的…
## 2           234   211 Rev     Minaret a… Minare… Minare… Минаре… مئذنة … 查姆回教寺院…
## 3          1590   569 Bis     Historic … Centre… Ciudad… Истори… المركز… <NA>   
## 4          1563   570 ter     Butrint    Butrint Butrin… Древни… بوترنت  布特林特……
## 5           111   102 <NA>    Al Qal'a … La Kal… Kalâa … Крепос… قلعة ب… 贝尼•哈玛德…
## 6           198   179 <NA>    Tassili n… Tassil… Tasili… Плато … طاسيلي… 阿杰尔的塔西…
## # ℹ 40 more variables: short_description_en <chr>, short_description_fr <chr>,
## #   short_description_es <chr>, short_description_ru <chr>,
## #   short_description_ar <chr>, short_description_zh <chr>,
## #   justification_en <chr>, justification_fr <chr>, date_inscribed <dbl>,
## #   secondary_dates <chr>, danger <dbl>, date_end <dbl>, danger_list <chr>,
## #   longitude <dbl>, latitude <dbl>, area_hectares <dbl>, C1 <dbl>, C2 <dbl>,
## #   C3 <dbl>, C4 <dbl>, C5 <dbl>, C6 <dbl>, N7 <dbl>, N8 <dbl>, N9 <dbl>, …

Anàlisi general de les dades

Primer es mira quants llocs hi ha en total i com es reparteixen per país, categoria i any d’inscripció.

nrow(dades)
## [1] 1248

El conjunt de dades conté 1248 llocs Patrimoni de la Humanitat.

Països amb més llocs

Alguns llocs són transfronterers i poden pertànyer a més d’un país. Per això separem el camp states_name_en abans de comptar.

paisos <- dades %>%
  separate_rows(states_name_en, sep = ",") %>%
  mutate(states_name_en = str_trim(states_name_en)) %>%
  count(states_name_en, sort = TRUE)

paisos_top <- paisos %>%
  head(15)

paisos_top
## # A tibble: 15 × 2
##    states_name_en                                           n
##    <chr>                                                <int>
##  1 Italy                                                   61
##  2 China                                                   60
##  3 Germany                                                 55
##  4 France                                                  54
##  5 Spain                                                   50
##  6 India                                                   44
##  7 Mexico                                                  36
##  8 United Kingdom of Great Britain and Northern Ireland    35
##  9 Russian Federation                                      33
## 10 Iran (Islamic Republic of)                              29
## 11 Japan                                                   26
## 12 United States of America                                26
## 13 Brazil                                                  25
## 14 Canada                                                  22
## 15 Türkiye                                                 22
graf.paisos <- ggplot(paisos_top,
                      aes(x = reorder(states_name_en, n),
                          y = n)) +
  geom_col() +
  coord_flip() +
  labs(title = "Països amb més llocs Patrimoni de la Humanitat",
       x = "País",
       y = "Nombre de llocs") +
  theme_minimal()

graf.paisos

El gràfic mostra que alguns països tenen molts més llocs que altres. Destaquen Itàlia, la Xina, Alemanya, França i Espanya.

Categories per regió

Ara es compara la categoria del patrimoni amb la regió. Com que alguns llocs poden aparèixer en més d’una regió, també separem el camp region_en.

regio.categoria <- dades %>%
  separate_rows(region_en, sep = ",") %>%
  mutate(region_en = str_trim(region_en)) %>%
  count(region_en, category)

regio.categoria
## # A tibble: 15 × 3
##    region_en                       category     n
##    <chr>                           <chr>    <int>
##  1 Africa                          Cultural    63
##  2 Africa                          Mixed        5
##  3 Africa                          Natural     44
##  4 Arab States                     Cultural    88
##  5 Arab States                     Mixed        3
##  6 Arab States                     Natural      6
##  7 Asia and the Pacific            Cultural   221
##  8 Asia and the Pacific            Mixed       13
##  9 Asia and the Pacific            Natural     73
## 10 Europe and North America        Cultural   496
## 11 Europe and North America        Mixed       12
## 12 Europe and North America        Natural     75
## 13 Latin America and the Caribbean Cultural   106
## 14 Latin America and the Caribbean Mixed        8
## 15 Latin America and the Caribbean Natural     40
graf.categories <- ggplot(regio.categoria,
                          aes(x = category,
                              y = region_en,
                              fill = n)) +
  geom_tile(color = "white") +
  scale_fill_gradient(low = "white",
                      high = "steelblue") +
  labs(title = "Distribució de categories per regió",
       x = "Categoria",
       y = "Regió",
       fill = "Nombre de llocs") +
  theme_minimal()

graf.categories

El gràfic mostra que la categoria cultural és la més freqüent. També es veu que Europa i Amèrica del Nord tenen molts llocs culturals.

Evolució anual de les inscripcions

Aquest apartat mostra quants llocs es van inscriure cada any.

evolucio <- dades %>%
  filter(!is.na(date_inscribed)) %>%
  count(date_inscribed) %>%
  arrange(date_inscribed) %>%
  rename(any = date_inscribed)

evolucio
## # A tibble: 46 × 2
##      any     n
##    <dbl> <int>
##  1  1978    12
##  2  1979    45
##  3  1980    27
##  4  1981    26
##  5  1982    24
##  6  1983    29
##  7  1984    22
##  8  1985    30
##  9  1986    29
## 10  1987    41
## # ℹ 36 more rows
graf.evolucio <- ggplot(evolucio,
                        aes(x = any,
                            y = n)) +
  geom_line() +
  geom_point() +
  labs(title = "Evolució anual de les inscripcions",
       x = "Any",
       y = "Nombre de llocs inscrits") +
  theme_classic()

graf.evolucio

L’evolució anual no és igual cada any. Hi ha anys amb més inscripcions i altres amb menys.

Mapes

Els mapes ajuden a veure la informació geogràfica. En aquest cas es fan servir la longitud i la latitud de cada lloc.

mapa.mon <- map_data("world")

dades.punts <- dades %>%
  filter(!is.na(longitude),
         !is.na(latitude))

Mapa 1: distribució mundial per categoria

Aquest mapa mostra on es troben els llocs i els diferencia segons si són culturals, naturals o mixtos.

mapa.1 <- ggplot() +
  geom_polygon(data = mapa.mon,
               aes(x = long,
                   y = lat,
                   group = group),
               fill = "white",
               color = "gray80") +
  geom_point(data = dades.punts,
             aes(x = longitude,
                 y = latitude,
                 color = category),
             size = 1,
             alpha = 0.6) +
  coord_fixed(xlim = c(-180, 180),
              ylim = c(-60, 85),
              ratio = 1.3) +
  labs(title = "Distribució mundial dels llocs Patrimoni de la Humanitat",
       subtitle = "Classificació segons la categoria",
       x = "Longitud",
       y = "Latitud",
       color = "Categoria") +
  theme_minimal()

mapa.1

Aquest mapa mostra que molts llocs culturals es concentren a Europa i Àsia. Els llocs naturals apareixen més repartits pel món.

Mapa 2: concentració per país

En aquest mapa, cada punt representa un país. La mida del punt indica quants llocs té aquell país. El punt es posa a la posició mitjana dels llocs d’aquell país.

concentracio.pais <- dades %>%
  filter(!is.na(longitude),
         !is.na(latitude),
         !is.na(states_name_en)) %>%
  separate_rows(states_name_en, sep = ",") %>%
  mutate(states_name_en = str_trim(states_name_en)) %>%
  group_by(states_name_en) %>%
  summarise(n = n(),
            longitude = mean(longitude),
            latitude = mean(latitude)) %>%
  ungroup()

concentracio.pais
## # A tibble: 171 × 4
##    states_name_en          n longitude latitude
##    <chr>               <int>     <dbl>    <dbl>
##  1 Afghanistan             2     66.2     34.6 
##  2 Albania                 4     20.8     42.4 
##  3 Algeria                 7      5.02    34.1 
##  4 Andorra                 1      1.60    42.5 
##  5 Angola                  1     14.2     -6.27
##  6 Antigua and Barbuda     1    -61.8     17.0 
##  7 Argentina              12    -58.9    -27.3 
##  8 Armenia                 3     44.6     40.5 
##  9 Australia              21    138.     -29.7 
## 10 Austria                12     14.7     48.1 
## # ℹ 161 more rows
mapa.2 <- ggplot() +
  geom_polygon(data = mapa.mon,
               aes(x = long,
                   y = lat,
                   group = group),
               fill = "white",
               color = "gray80") +
  geom_point(data = concentracio.pais,
             aes(x = longitude,
                 y = latitude,
                 size = n),
             alpha = 0.6) +
  coord_fixed(xlim = c(-180, 180),
              ylim = c(-60, 85),
              ratio = 1.3) +
  labs(title = "Concentració de llocs Patrimoni de la Humanitat per país",
       subtitle = "La mida del punt indica el nombre de llocs",
       x = "Longitud",
       y = "Latitud",
       size = "Nombre de llocs") +
  theme_minimal()

mapa.2

Aquest mapa permet veure ràpidament quins països tenen més llocs Patrimoni de la Humanitat.

Anàlisi de text

L’anàlisi de text es fa amb el camp short_description_es, que conté la descripció breu dels llocs en castellà. S’ha escollit aquest camp perquè podem eliminar paraules buides en castellà amb tidytext.

Abans de comptar les paraules, cal netejar el text. En aquest procés s’eliminen etiquetes HTML, es corregeixen accents codificats i es treuen paraules molt comunes.

descripcions <- dades %>%
  select(id_no, name_es, category, short_description_es) %>%
  filter(!is.na(short_description_es)) %>%
  mutate(short_description_es = str_replace_all(short_description_es, "<[^>]+>", " "),
         short_description_es = str_replace_all(short_description_es, "&aacute;", "á"),
         short_description_es = str_replace_all(short_description_es, "&eacute;", "é"),
         short_description_es = str_replace_all(short_description_es, "&iacute;", "í"),
         short_description_es = str_replace_all(short_description_es, "&oacute;", "ó"),
         short_description_es = str_replace_all(short_description_es, "&uacute;", "ú"),
         short_description_es = str_replace_all(short_description_es, "&Aacute;", "Á"),
         short_description_es = str_replace_all(short_description_es, "&Eacute;", "É"),
         short_description_es = str_replace_all(short_description_es, "&Iacute;", "Í"),
         short_description_es = str_replace_all(short_description_es, "&Oacute;", "Ó"),
         short_description_es = str_replace_all(short_description_es, "&Uacute;", "Ú"),
         short_description_es = str_replace_all(short_description_es, "&ntilde;", "ñ"),
         short_description_es = str_replace_all(short_description_es, "&Ntilde;", "Ñ"),
         short_description_es = str_replace_all(short_description_es, "&uuml;", "ü"),
         short_description_es = str_replace_all(short_description_es, "&Uuml;", "Ü"),
         short_description_es = str_replace_all(short_description_es, "&nbsp;", " "),
         short_description_es = str_replace_all(short_description_es, "&quot;", " "),
         short_description_es = str_replace_all(short_description_es, "&amp;", " "),
         short_description_es = str_replace_all(short_description_es, "&[a-zA-Z]+;", " "),
         short_description_es = str_squish(short_description_es))

head(descripcions)
## # A tibble: 6 × 4
##   id_no name_es                                    category short_description_es
##   <dbl> <chr>                                      <chr>    <chr>               
## 1   208 Paisaje cultural y vestigios arqueológico… Cultural Este sitio es un ex…
## 2   211 Minarete y vestigios arqueológicos de Jam  Cultural Con sus 65 metros d…
## 3   569 Ciudad Museo de Gjirokastra                Cultural Situada en el valle…
## 4   570 Butrinto                                   Cultural Habitado desde tiem…
## 5   102 Kalâa de los Béni-Hammad                   Cultural Situadas en un pais…
## 6   179 Tasili n’Ajer                              Mixed    Ubicado en un extra…
paraules <- descripcions %>%
  unnest_tokens(paraula, short_description_es)

vacias <- get_stopwords("es") %>%
  rename(paraula = word) %>%
  select(paraula)

vacias.extra <- tibble(
  paraula = c("sitio", "sitios",
              "lugar", "lugares",
              "siglo", "siglos",
              "gran", "así",
              "años", "año",
              "parte", "conjunto",
              "zona", "zonas")
)

vacias <- vacias %>%
  bind_rows(vacias.extra) %>%
  distinct()

paraules.netes <- paraules %>%
  anti_join(vacias, by = "paraula") %>%
  filter(!str_detect(paraula, "^[0-9]+$")) %>%
  filter(str_length(paraula) > 2)

freq.paraules <- paraules.netes %>%
  count(paraula, sort = TRUE)

paraules.top <- freq.paraules %>%
  arrange(desc(n)) %>%
  head(20)

paraules.top
## # A tibble: 20 × 2
##    paraula          n
##    <chr>        <int>
##  1 ciudad         577
##  2 región         258
##  3 edificios      257
##  4 paisaje        254
##  5 especies       253
##  6 situado        247
##  7 arquitectura   237
##  8 excepcional    234
##  9 vestigios      233
## 10 mundo          217
## 11 centro         210
## 12 comprende      192
## 13 ejemplo        184
## 14 dos            183
## 15 importante     181
## 16 largo          161
## 17 parque         161
## 18 situada        160
## 19 arte           153
## 20 cultural       151

Paraules més freqüents

graf.paraules <- ggplot(paraules.top,
                        aes(x = reorder(paraula, n),
                            y = n)) +
  geom_col() +
  coord_flip() +
  labs(title = "Paraules més freqüents a les descripcions dels llocs",
       subtitle = "Anàlisi del camp short_description_es",
       x = "Paraula",
       y = "Freqüència") +
  theme_minimal()

graf.paraules

Les paraules més freqüents estan relacionades amb ciutats, edificis, paisatges, espècies, arquitectura i vestigis. Això mostra que les descripcions combinen aspectes culturals, històrics i naturals.

Núvol de paraules

Perquè el núvol sigui més fàcil de llegir, només es fan servir les 100 paraules més freqüents.

nuvol.paraules <- freq.paraules %>%
  head(100) %>%
  wordcloud2(size = 0.7)

nuvol.paraules

Problemes trobats durant el procés

Durant el procés s’han detectat i corregit diversos problemes.

Primer, el paquet stopwords era necessari per eliminar les paraules buides en castellà. Per evitar errors, s’ha afegit a la llista de paquets que cal tenir instal·lats.

Segon, en el núvol de paraules apareixien codis com oacute, iacute o aacute. Aquests codis venien dels accents en format HTML. Per solucionar-ho, s’ha fet una neteja del text abans de comptar les paraules.

Tercer, el gràfic de categories per regió mostrava algunes regions combinades. Això passava perquè alguns llocs són transfronterers. Per corregir-ho, s’ha separat el camp region_en abans de fer el recompte.

Finalment, el núvol de paraules era massa carregat quan es feien servir totes les paraules. Per això, al final només s’han utilitzat les 100 paraules més freqüents.

Conclusions

Els resultats mostren que els llocs Patrimoni de la Humanitat no estan repartits de manera igual per tot el món. Alguns països tenen molts més llocs que altres, sobretot en la categoria cultural.

Els mapes ajuden a veure aquesta distribució geogràfica. També mostren que els llocs culturals es concentren més a Europa i Àsia, mentre que els llocs naturals estan més repartits.

L’anàlisi de text mostra que les descripcions dels llocs fan servir moltes paraules relacionades amb ciutats, edificis, paisatges, espècies i arquitectura. Això indica que el Patrimoni de la Humanitat combina valor cultural, valor històric i valor natural.