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.
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>, …
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.
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.
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.
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.
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))
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.
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.
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, "á", "á"),
short_description_es = str_replace_all(short_description_es, "é", "é"),
short_description_es = str_replace_all(short_description_es, "í", "í"),
short_description_es = str_replace_all(short_description_es, "ó", "ó"),
short_description_es = str_replace_all(short_description_es, "ú", "ú"),
short_description_es = str_replace_all(short_description_es, "Á", "Á"),
short_description_es = str_replace_all(short_description_es, "É", "É"),
short_description_es = str_replace_all(short_description_es, "Í", "Í"),
short_description_es = str_replace_all(short_description_es, "Ó", "Ó"),
short_description_es = str_replace_all(short_description_es, "Ú", "Ú"),
short_description_es = str_replace_all(short_description_es, "ñ", "ñ"),
short_description_es = str_replace_all(short_description_es, "Ñ", "Ñ"),
short_description_es = str_replace_all(short_description_es, "ü", "ü"),
short_description_es = str_replace_all(short_description_es, "Ü", "Ü"),
short_description_es = str_replace_all(short_description_es, " ", " "),
short_description_es = str_replace_all(short_description_es, """, " "),
short_description_es = str_replace_all(short_description_es, "&", " "),
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
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.
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
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.
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.