Această postare este a cincea dintr-o serie de șapte despre problemele populației din Pacific, regenerând diagramele pe care le-am folosit într-un discurs principal înainte de reuniunea din noiembrie 2025 a șefilor de planificare și statistică din Pacific din Wellington, Noua Zeelandă. Cele șapte piese ale puzzle-ului sunt:
Postarea de astăzi este despre piramidele populației și este un teritoriu familiar pentru cititorii obișnuiți ai blogului, dacă există. Codul este, practic, o adaptare a celei folosite pentru a crea aceste piramide animate ale populației, ajustate pentru a crea imagini statice de care aveam nevoie pentru a sublinia ideea în discursul meu.
Kiribati și Insulele Marshall
În primul rând, asta a însemnat această imagine, care contrastează forma demografică și creșterea a două națiuni cu atol de corali, Kiribati și Insulele Marshall:
Kiribati are astăzi aproximativ de patru ori populația Insulelor Marshall, dar în 1980 era doar aproximativ dublă. Lucrul semnificativ aici este talia de viespe a piramidei Insulelor Marshall în 2025 – în timp ce a avut o formă similară cu Kiribati în 1980. Oamenii la vârsta maximă de muncă și reproducere sunt literalmente absenți din Insulele Marshall de astăzi – în acest caz, în primul rând în SUA, care acordă drepturi de ședere automate Compact of Free Association Countries, Palatul și Microhall.
Rezultatul este că Insulele Marshall nu numai că beneficiază de faptul că indivizii săi au mai multă libertate de mișcare și oportunități și că trimit înapoi remitențe; dar și având o supapă de presiune pentru ceea ce altfel ar fi o populație în creștere rapidă (prea rapidă?). Pentru a spune clar, Kiribati are o problemă cu prea mulți oameni (în special în sudul aglomerat Tarawa); Insulele Marshall, dacă au o problemă cu populația, este una dintre prea puține. Contrastul dintre Tarawa aglomerat, relativ sărac și Majuro, mai puțin aglomerat și relativ înstărit, este unul evident și clar pentru oricine călătorește la ambele în succesiune rapidă.
Acea primă diagramă încearcă să arate atât dimensiunea absolută, cât și forma în același timp. O prezentare alternativă lasă axa x să fie liberă, renunțând la comparabilitatea dimensiunii, dar făcând modificările formei mai vizibile. Există avantaje și dezavantaje ale fiecăruia, dar versiunea cu axă liberă arată cu siguranță în mod dramatic schimbarea formei Insulelor Marshall, în special:
Iată codul pentru a descărca datele de la Pacific Data Hub și a desena acele diagrame:
# this script draws population pyramids for 1980 and 2025, firstly
# for Marshall Islands and Kiribati together for comparison
# purposes, and then for each of the 21 PICTs (exlcuding Pitcairn)
# so we can pick and choose which ones
#
# Peter Ellis November 2025
library(tidyverse)
library(janitor)
library(rsdmx)
library(ISOcodes)
library(glue)
# see https://blog.datawrapper.de/gendercolor/
pal <- c("#D4855A", "#C5CB81")
names(pal) <- c("Female", "Male")
# Download all population data needed
if(!exists("pop2picts")){
pop2picts <- readSDMX("https://stats-sdmx-disseminate.pacificdata.org/rest/data/SPC,DF_POP_PROJ,3.0/A.AS+CK+FJ+PF+GU+KI+MH+FM+NR+NC+NU+MP+PW+PG+WS+SB+TK+TO+TV+VU+WF.MIDYEARPOPEST.F+M.Y00T04+Y05T09+Y10T14+Y15T19+Y20T24+Y25T29+Y30T34+Y35T39+Y40T44+Y45T49+Y50T54+Y55T59+Y60T64+Y65T69+Y70T999?startPeriod=1980&endPeriod=2025&dimensionAtObservation=AllDimensions") |>
as_tibble() |>
clean_names()
}
# sort out the from and to ages, rename sex, and add country labels
d <- pop2picts |>
mutate(age = gsub("^Y", "", age)) |>
separate(age, into = c("from", "to"), sep = "T", remove = FALSE) |>
mutate(age = gsub("T", "-", age),
age = gsub("-999", "+", age, fixed = TRUE),
sex = case_when(
sex == "M" ~ "Male",
sex == "F" ~ "Female"
)) |>
mutate(age = factor(age)) |>
left_join(ISO_3166_1, by = c("geo_pict" = "Alpha_2")) |>
rename(pict = Name) |>
filter(time_period %in% c(1980, 2025))
#----------Marshalls and Kiribati-------------
# subset data to these two countries:
d1 <- d |>
filter(pict %in% c("Kiribati", "Marshall Islands"))
# breaks in axis for Marshall and Kiribati chart:
x_breaks <- c(-6000, - 4000, -2000, 0, 2000, 4000, 6000)
# draw chart:
pyramid_km <- d1 |>
# according to Wikipedia males are usually on the left and females on the right
filter(sex == "Female") |>
ggplot(aes(y = age)) +
facet_grid(pict ~ time_period) +
geom_col(aes(x = obs_value), fill = pal('Female')) +
geom_col(data = filter(d1, sex == "Male"), aes(x = -obs_value), fill = pal('Male')) +
labs(x = "", y = "Age group") +
scale_x_continuous(breaks = x_breaks, labels = c("6,000", "4,000", "2,000n(male)", 0 ,
"2,000n(female)", "4,000", "6,000")) +
theme(panel.grid.minor = element_blank(),
strip.text = element_text(size = 14, face = "bold"))
print(pyramid_km)
pyramid_km_fr <- pyramid_km +
facet_wrap(pict ~ time_period, scales = "free_x")
print(pyramid_km_fr)
Toate țările insulare din Pacific, una câte una
Am folosit aceeași diagramă pentru a genera o imagine PNG a fiecărei țări insulare din Pacific, una câte una. În discursul propriu-zis, am introdus câteva dintre acestea în PowerPoint pentru a implica publicul și pentru a contrasta diferite forme. Aceste parcele sunt toate dimensionate pentru a se potrivi într-un singur cadru din șablonul PowerPoint pe care îl foloseam.
De exemplu, aici este Tuvalu:

Până de curând, a fost relativ dificil să emigrezi din Tuvalu. Ca rezultat, vedem o piramidă a populației mai mult sau mai puțin regulată pentru o țară aflată în stadiul târziu al tranziției demografice.
În schimb, aici este teritoriul francez Wallis și Futuna:


Locuitorii din Wallis și Futuna se pot deplasa liber în alte teritorii franceze, cum ar fi Noua Caledonie, și au făcut acest lucru în număr considerabil. Prin urmare, vedem o penurie în categoria de vârstă 25-39 de ani.
Iată codul pentru a produce acele piramide pentru țări individuale, salvându-le într-un folder pentru utilizare ulterioară. Da, folosesc întotdeauna bucle pentru acest gen de lucruri, găsindu-le atât ușor de scris, cât și de citit (și a spune că buclele nu sunt niciodată bune în R este doar o prejudecată depășită):
#--------------population pyramid individual image for each pict-----------
# This section draws one chart and saves as an image for each PICT
dir.create("pic-pyramids", showWarnings = FALSE)
all_picts <- unique(d$pict)
for(this_pict in all_picts){
this_d <- d |>
filter(pict == this_pict)
this_pyramid <- this_d |>
filter(sex == "Female") |>
ggplot(aes(y = age)) +
facet_grid(pict ~ time_period) +
geom_col(aes(x = obs_value), fill = pal('Female')) +
geom_col(data = filter(this_d, sex == "Male"), aes(x = -obs_value), fill = pal('Male')) +
labs(x = "", y = "Age group") +
theme(panel.grid.minor = element_blank(),
strip.text = element_text(size = 14, face = "bold"))
png(glue("pic-pyramids/pyramid-{this_pict}.png"), width = 5000, height = 2800,
res = 600, type = "cairo-png")
print(this_pyramid)
dev.off()
}
Asta e tot pentru azi. Postarea finală a seriei va spune mai multe despre implicațiile tuturor acestor lucruri în contextul celorlalte părți de analiză.
