Mapamundi
En aquest apartat utilitzarem els conceptes que hem après a l’assignatura per treballar amb un mapa de polígons. Necessitarem:
- Un mapa de polígons: Utilitzarem la informació espaial que hi ha al paquet rnaturalearth.
- Un marc de dades: Utilitzarem un recull de dades del Quality of Government Institute (Dahlberg et al. 2020) relacionades amb la política internacional.
Aquests són els paquets que necessitarem per realitzar l’exercici:
#recordeu que els paquets han d'estar prèviament instal·lats
library(dplyr)
library(readr)
library(rnaturalearth)
library(ggplot2)
library(sf)
Mapa
El mapamundi el podem carregar a través de la funció ne_countries()
que es troba dins el paquet rnaturalearth. A l’objecte world
hem guardat informació geoespaial sobre tots els països del món. Si ens fixem en el seu contingut amb glimpse(world)
, veurem que cada observació és un estat i que l’última columna conté la variable geometry
, que és on hi ha emmagatzemats els polígons.
world <- ne_countries(scale = "medium", returnclass = "sf")
glimpse(world)
## Rows: 241
## Columns: 64
## $ scalerank <int> 3, 1, 1, 1, 1, 3, 3, 1, 1, 1, 3, 1, 5, 3, 1, 1, 1, 1, 1, 1,…
## $ featurecla <chr> "Admin-0 country", "Admin-0 country", "Admin-0 country", "A…
## $ labelrank <dbl> 5, 3, 3, 6, 6, 6, 6, 4, 2, 6, 4, 4, 5, 6, 6, 2, 4, 5, 6, 2,…
## $ sovereignt <chr> "Netherlands", "Afghanistan", "Angola", "United Kingdom", "…
## $ sov_a3 <chr> "NL1", "AFG", "AGO", "GB1", "ALB", "FI1", "AND", "ARE", "AR…
## $ adm0_dif <dbl> 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0,…
## $ level <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ type <chr> "Country", "Sovereign country", "Sovereign country", "Depen…
## $ admin <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ adm0_a3 <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALD", "AND", "ARE", "AR…
## $ geou_dif <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ geounit <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ gu_a3 <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALD", "AND", "ARE", "AR…
## $ su_dif <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ subunit <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ su_a3 <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALD", "AND", "ARE", "AR…
## $ brk_diff <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ name <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ name_long <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ brk_a3 <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALD", "AND", "ARE", "AR…
## $ brk_name <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ brk_group <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ abbrev <chr> "Aruba", "Afg.", "Ang.", "Ang.", "Alb.", "Aland", "And.", "…
## $ postal <chr> "AW", "AF", "AO", "AI", "AL", "AI", "AND", "AE", "AR", "ARM…
## $ formal_en <chr> "Aruba", "Islamic State of Afghanistan", "People's Republic…
## $ formal_fr <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ note_adm0 <chr> "Neth.", NA, NA, "U.K.", NA, "Fin.", NA, NA, NA, NA, "U.S.A…
## $ note_brk <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Multiple claim…
## $ name_sort <chr> "Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "A…
## $ name_alt <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ mapcolor7 <dbl> 4, 5, 3, 6, 1, 4, 1, 2, 3, 3, 4, 4, 1, 7, 2, 1, 3, 1, 2, 3,…
## $ mapcolor8 <dbl> 2, 6, 2, 6, 4, 1, 4, 1, 1, 1, 5, 5, 2, 5, 2, 2, 1, 6, 2, 2,…
## $ mapcolor9 <dbl> 2, 8, 6, 6, 1, 4, 1, 3, 3, 2, 1, 1, 2, 9, 5, 2, 3, 5, 5, 1,…
## $ mapcolor13 <dbl> 9, 7, 1, 3, 6, 6, 8, 3, 13, 10, 1, NA, 7, 11, 5, 7, 4, 8, 8…
## $ pop_est <dbl> 103065, 28400000, 12799293, 14436, 3639453, 27153, 83888, 4…
## $ gdp_md_est <dbl> 2258.0, 22270.0, 110300.0, 108.9, 21810.0, 1563.0, 3660.0, …
## $ pop_year <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ lastcensus <dbl> 2010, 1979, 1970, NA, 2001, NA, 1989, 2010, 2010, 2001, 201…
## $ gdp_year <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ economy <chr> "6. Developing region", "7. Least developed region", "7. Le…
## $ income_grp <chr> "2. High income: nonOECD", "5. Low income", "3. Upper middl…
## $ wikipedia <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ fips_10 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ iso_a2 <chr> "AW", "AF", "AO", "AI", "AL", "AX", "AD", "AE", "AR", "AM",…
## $ iso_a3 <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALA", "AND", "ARE", "AR…
## $ iso_n3 <chr> "533", "004", "024", "660", "008", "248", "020", "784", "03…
## $ un_a3 <chr> "533", "004", "024", "660", "008", "248", "020", "784", "03…
## $ wb_a2 <chr> "AW", "AF", "AO", NA, "AL", NA, "AD", "AE", "AR", "AM", "AS…
## $ wb_a3 <chr> "ABW", "AFG", "AGO", NA, "ALB", NA, "ADO", "ARE", "ARG", "A…
## $ woe_id <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ adm0_a3_is <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALA", "AND", "ARE", "AR…
## $ adm0_a3_us <chr> "ABW", "AFG", "AGO", "AIA", "ALB", "ALD", "AND", "ARE", "AR…
## $ adm0_a3_un <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ adm0_a3_wb <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ continent <chr> "North America", "Asia", "Africa", "North America", "Europe…
## $ region_un <chr> "Americas", "Asia", "Africa", "Americas", "Europe", "Europe…
## $ subregion <chr> "Caribbean", "Southern Asia", "Middle Africa", "Caribbean",…
## $ region_wb <chr> "Latin America & Caribbean", "South Asia", "Sub-Saharan Afr…
## $ name_len <dbl> 5, 11, 6, 8, 7, 5, 7, 20, 9, 7, 14, 10, 23, 22, 17, 9, 7, 1…
## $ long_len <dbl> 5, 11, 6, 8, 7, 13, 7, 20, 9, 7, 14, 10, 27, 35, 19, 9, 7, …
## $ abbrev_len <dbl> 5, 4, 4, 4, 4, 5, 4, 6, 4, 4, 9, 4, 7, 10, 6, 4, 5, 4, 4, 5…
## $ tiny <dbl> 4, NA, NA, NA, NA, 5, 5, NA, NA, NA, 3, NA, NA, 2, 4, NA, N…
## $ homepart <dbl> NA, 1, 1, NA, 1, NA, 1, 1, 1, 1, NA, 1, NA, NA, 1, 1, 1, 1,…
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-69.89912 1..., MULTIPOLYGON (…
Com hem pogut observar, el marc de dades world
ja conté algunes variables específiques de cada país, com per exemple:
- El tipus de país:
type
. - La població estimada:
pop_est
. - Dues classificacions segons nivell de desenvolupament:
gdp_md_est
,economy
,income_grp
. - Classificacions regionals:
continent
,region_un
,subregion
,region_wb
. - Altres:
mapcolor7
,mapcolor8
,mapcolor9
,mapcolor13
.
Amb el següent codi reproduïm el mapamundi segons la classificació regional continent
.
world %>%
ggplot() +
geom_sf(aes(fill = continent))
Exercici 1. Examina el marc de dades i respon a les següents preguntes:
- Quins valors pot adoptar la variable
continent
? Pots comprovar-ho ambunique(world$continent)
. - Crea un nou mapa substituint la variable
continent
per una altra de les variables del marc de dades que hem indicat anteriorment. Quins valors pot prendre?
Dades
Una de les parts més interessants de treballar amb dades és que podem enganxar fàcilment un mapa de polígons amb unes dades específiques. En aquest cas, el nostre objectiu és utilitzar el mapa que hem guardat a l’objecte world
per visualitzar les dades que es troben al QoG Basic dataset del Quality of Government Institute (Dahlberg et al. 2020). En el següent codi, hem emmagatzemat les dades transversals (arxiu CSV a l’apartat Cross Section) a l’objecte qog
i les hem unit al marc de dades world
a través de les variables més coincidents (adm0_a3_is
i ccodealp
). Amb això aconseguim maximitzar a 199 el nombre d’observacions.
qog <- read_csv("http://www.qogdata.pol.gu.se/data/qog_bas_cs_jan20.csv")
qogw <- world %>%
inner_join(qog, by = c("adm0_a3_is" = "ccodealp"))
Si consultem totes les variables del nou marc de dades amb names(qogw)
veurem la gran quantitat de fenòmens que podem reproduir. Al següent mapa hem reproduït el Global Peace Index (gpi_gpi
), que classifica els països en cinc categories segons si són més o menys pacífics.
ggplot(qogw) +
geom_sf(aes(fill = gpi_gpi))
Exercici 2. Utilitza les funcions glimpse(qogw)
i names(qogw)
per examinar el marc de dades. Busca una variable que t’interessi al llibre de codis i reprodueix-la utilitzant el codi anterior (aquí trobaràs més informació sobre com llegir un llibre de codis). Respon a les següents preguntes:
- Quina variable has seleccionat? Què està mesurant?
- Què observem en el mapa? Fes-ne una descripció.
- Hi ha algun país del qual no tinguem dades? Sabries dir per què?
Pots intentar crear el mapa amb aquesta versió més avançada de codi. Tots els colors els trobaràs a aquest enllaç:
ggplot(qogw) +
geom_sf(aes(fill = gpi_gpi)) +
scale_fill_gradient(low = "white", high = "seagreen4") +
theme(panel.background = element_rect(fill = "lightcyan1")) +
labs(title = "Global Peace Index (2018)", x = "Longitud", y = "Latitud",
fill = "GPI")
Extra: Què és un polígon?
La variable geometry
del marc de dades world
conté la informació de cada polígon. A cada observació hi trobarem informació d’un polígon diferent. Intenteu visualitzar la informació de la observació número 16:
plot(world$geometry[16])