Ce notebook génère une carte par points pour visualiser la
répartition de la population connue des bailliages en 1793, en utilisant
les packages sf, dplyr, et
ggplot2.
# Chargement des shapefiles
paroisses <- st_read("C:/Users/Najla Touati/Dropbox/temporaire/obardi_R/data/bailliages/COMMUNES_1789_BRETTE_polyg.shp")## Reading layer `COMMUNES_1789_BRETTE_polyg' from data source
## `C:\Users\Najla Touati\Dropbox\temporaire\obardi_R\data\bailliages\COMMUNES_1789_BRETTE_polyg.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 33965 features and 15 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99040 ymin: 6046546 xmax: 1242444 ymax: 7110479
## Projected CRS: RGF93 Lambert 93
bailliage <- st_read("C:/Users/Najla Touati/Dropbox/temporaire/obardi_R/data/bailliages/BAILLIAGES_1789_BRETTE_polyg.shp")## Reading layer `BAILLIAGES_1789_BRETTE_polyg' from data source
## `C:\Users\Najla Touati\Dropbox\temporaire\obardi_R\data\bailliages\BAILLIAGES_1789_BRETTE_polyg.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 435 features and 22 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99040 ymin: 6046546 xmax: 1242444 ymax: 7110479
## Projected CRS: RGF93 Lambert 93
# === 2. CALCULS DES VARIABLES ===
# Surface totale des paroises en km²
paroisses <-paroisses %>%
mutate(
surface_km2 = as.numeric(st_area(geometry)) / 1000000
)
# Agrégation des données par bailliage
bailliage <- paroisses %>%
group_by(X.bailliage) %>%
summarise(
surface_totale_km2 = sum(surface_km2, na.rm = TRUE),
surface_avec_pop_km2 = sum(surface_km2[!is.na(j_P1793pop)], na.rm = TRUE),
surface_sans_pop_km2 = sum(surface_km2[is.na(j_P1793pop)], na.rm = TRUE),
population_connue = sum(j_P1793pop, na.rm = TRUE)
) %>%
mutate(
densite_hab_km2 = population_connue / surface_avec_pop_km2,
coefficient_incertitude_pct = 100 * surface_sans_pop_km2 / surface_totale_km2
)La population connue est la somme des populations disponibles et connues d’après les sources.
# Préparer les données
bailliage_dots <- bailliage %>%
filter(!is.na(population_connue) & population_connue > 0) %>%
mutate(nb_points = round(population_connue / 10, 0))
# Générer les points aléatoirement dans chaque bailliage
dots <- st_sample(bailliage_dots, bailliage_dots$nb_points,
type = "random", exact = TRUE)
# Créer des cercles autour des points (ajuster le radius selon projection)
circles <- st_buffer(dots, dist = 1000) # 1000 mètres = 1 km
# Convertir pour ggplot2
dots_sf <- st_as_sf(dots)
circles_sf <- st_as_sf(circles)# === CARTE ggplot2 ===
map_dot <- ggplot() +
geom_sf(data = bailliage,
fill = "grey95", color = "grey70", linewidth = 0.2) +
geom_sf(data = circles_sf,
fill = "#283445", color = "#283445", linewidth = 0.05) +
labs(title = "Point cartogram of the population by bailliage in 1793") +
annotate("text",
x = st_bbox(bailliage)[1] + (st_bbox(bailliage)[3]-st_bbox(bailliage)[1])*0.01,
y = st_bbox(bailliage)[2] + (st_bbox(bailliage)[4]-st_bbox(bailliage)[2])*0.08,
label = "1 point = 10 inhabitants",
hjust = 0, size = 4.5, fontface = "bold", color = "#283445") +
annotate("text",
x = st_bbox(bailliage)[1] + (st_bbox(bailliage)[3]-st_bbox(bailliage)[1])*0.01,
y = st_bbox(bailliage)[2] + (st_bbox(bailliage)[4]-st_bbox(bailliage)[2])*0.04,
label = "Source : []",
hjust = 0, size = 3.7, color = "grey30") +
annotate("text",
x = st_bbox(bailliage)[1] + (st_bbox(bailliage)[3]-st_bbox(bailliage)[1])*0.01,
y = st_bbox(bailliage)[2] + (st_bbox(bailliage)[4]-st_bbox(bailliage)[2])*0.01,
label = "Conception : N. Touati, 2025",
hjust = 0, size = 3.7, color = "grey30") +
theme_minimal() +
theme(
plot.title = element_text(size = 18, face = "bold"),
axis.title = element_blank(),
axis.text = element_blank(),
panel.grid = element_blank()
)
map_dot
### 3.3 xport de la carte en png