Code
source (here:: here ("_rinit.R" ))
source (here:: here ("data" , "paris" , "_paris.R" )) # wkb2sfc(), paris_basemap(), arrondissements_sf()
invisible (Sys.setlocale ("LC_TIME" , "fr_FR.UTF-8" ))
# cd ~/iCloud/website/data/paris; /usr/local/bin/R -e 'quarto::quarto_render("ilots-de-fraicheur-equipements-activites.qmd")'
knitr:: opts_chunk$ set (echo = TRUE , message = FALSE , warning = FALSE ,
fig.width = 8 , fig.height = 5 , dpi = 150 )
if_path <- here:: here ("data" , "paris" , "ilots-de-fraicheur-equipements-activites.parquet" )
ilf <- arrow:: read_parquet (if_path) |>
dplyr:: mutate (ar = suppressWarnings (as.integer (substr (arrondissement, 4 , 5 ))))
n_tot <- nrow (ilf)
arr_sf <- arrondissements_sf ()
pts_sf <- ilf |>
dplyr:: mutate (geometry = wkb2sfc (geo_point_2d)) |>
sf:: st_as_sf (crs = 4326 )
theme_carte <- theme_void (base_size = 12 ) +
theme (plot.title = element_text (face = "bold" ),
plot.subtitle = element_text (colour = "grey35" ),
plot.margin = margin (5 , 12 , 5 , 5 ))
theme_barres <- theme_minimal (base_size = 12 ) +
theme (plot.title = element_text (face = "bold" ),
plot.subtitle = element_text (colour = "grey35" ),
panel.grid.major.y = element_blank ())
Un recensement, en vue des épisodes de canicule, des lieux et dispositifs « frais » accessibles au public : ombrières, brumisateurs, piscines, baignades extérieures, mais aussi des lieux fermés naturellement climatisés — musées, bibliothèques, mairies d’arrondissement, lieux de culte. 535 équipements au total, 82% d’entre eux gratuits.
Code
ilf |>
dplyr:: transmute (Nom = nom, Type = type, Adresse = adresse, Arrondissement = ar, Payant = payant) |>
dplyr:: slice_sample (n = 8 ) |>
gt:: gt () |>
gt:: sub_missing (missing_text = "—" ) |>
gt:: tab_header (title = "8 équipements tirés au hasard" ) |>
gt:: tab_options (table.width = "100%" )
Nom
Type
Adresse
Arrondissement
Payant
ABRI PARC DE BELLEVILLE
Ombrière pérenne
45 RUE DES COURONNES
20
Non
Eglise Saint-Joseph des Carmes
Lieux de culte
70 RUE VAUGIRARD
6
Non
MAIRIE DU 16E
Mairie d'arrondissement
71 avenue HENRI MARTIN
16
Non
Piscine Rouvet
Piscine
1, rue Rouvet
19
Oui
Brumisateur Square Misstic
Brumisateur
Square Misstic
5
Non
Musée de la Chasse et de la Nature
Musée
62 Rue des Archives
3
Oui
ABRI JARDIN DU RANELAGH
Ombrière pérenne
22 CHAUSSEE DE LA MUETTE
16
Non
Musée d'Orsay
Musée
1 Rue de la Légion d'Honneur
7
Oui
Carte
Code
pal <- leaflet:: colorFactor ("Paired" , domain = ilf$ type)
leaflet:: leaflet (pts_sf, options = leaflet:: leafletOptions (minZoom = 11 )) |>
paris_basemap () |>
leaflet:: addPolygons (data = arr_sf, fill = FALSE , color = "#999" , weight = 1 ) |>
leaflet:: addCircleMarkers (
radius = 5 , stroke = FALSE , fillOpacity = 0.8 ,
fillColor = ~ pal (type),
label = ~ sprintf ("%s — %s" , nom, type),
popup = ~ sprintf ("<b>%s</b><br>%s<br>%s<br>%s" , nom, type, adresse,
ifelse (payant == "Oui" , "Payant" , "Gratuit" ))
) |>
leaflet:: addLegend ("bottomright" , pal = pal, values = ~ type, title = "Type" , opacity = 0.9 )
Par arrondissement
Code
cnt <- ilf |> dplyr:: filter (! is.na (ar)) |> dplyr:: count (ar, name = "n" )
arr_sf |>
dplyr:: left_join (cnt, by = c ("c_ar" = "ar" )) |>
ggplot () +
geom_sf (aes (fill = n), colour = "white" , linewidth = 0.2 ) +
scale_fill_viridis_c (option = "mako" , direction = - 1 , na.value = "grey92" , name = "Équipements" ) +
labs (title = "Îlots de fraîcheur par arrondissement" ) +
theme_carte
Ce que recensent les données
Code
ilf |>
dplyr:: count (type, sort = TRUE ) |>
dplyr:: mutate (type = forcats:: fct_reorder (type, n)) |>
ggplot (aes (n, type)) +
geom_col (fill = "#2f6f9f" , width = 0.7 ) +
geom_text (aes (label = n), hjust = - 0.2 , size = 3.2 ) +
scale_x_continuous (expand = expansion (mult = c (0 , 0.12 ))) +
labs (title = "Type d'équipement" ,
subtitle = "Ombrières, lieux de culte et brumisateurs forment le gros des recensements" ,
x = NULL , y = NULL ) +
theme_barres
Code
ilf |>
dplyr:: filter (! is.na (payant)) |>
dplyr:: count (payant) |>
dplyr:: mutate (payant = ifelse (payant == "Oui" , "Payant" , "Gratuit" )) |>
ggplot (aes (n, payant)) +
geom_col (fill = "#3b6f8a" , width = 0.5 ) +
geom_text (aes (label = scales:: percent (n / sum (n), 1 )), hjust = - 0.15 , size = 3.5 ) +
scale_x_continuous (expand = expansion (mult = c (0 , 0.12 ))) +
labs (title = "Accès payant ou gratuit" , x = NULL , y = NULL ) +
theme_barres
Tous les équipements
Code
ilf |>
dplyr:: arrange (type, nom) |>
dplyr:: transmute (Nom = nom, Type = type, Adresse = adresse, Arrondissement = ar, Payant = payant) |>
reactable:: reactable (
searchable = TRUE ,
filterable = TRUE ,
pagination = TRUE ,
defaultPageSize = 25 ,
showPageSizeOptions = TRUE ,
pageSizeOptions = c (10 , 25 , 50 , 100 ),
compact = TRUE ,
resizable = TRUE ,
highlight = TRUE ,
wrap = TRUE ,
defaultColDef = reactable:: colDef (
align = "left" ,
headerStyle = list (fontWeight = "bold" ),
style = list (whiteSpace = "normal" , wordBreak = "break-word" )
),
columns = list (
Nom = reactable:: colDef (minWidth = 180 ),
Type = reactable:: colDef (minWidth = 140 ),
Adresse = reactable:: colDef (minWidth = 200 ),
Arrondissement = reactable:: colDef (minWidth = 70 , maxWidth = 120 ),
Payant = reactable:: colDef (minWidth = 70 , maxWidth = 100 )
)
)
Source & données
Code
tibble:: tibble (
` ` = c ("Jeu de données" , "Producteur" , "Licence" , "Fichier" , "Mise à jour" , "Observations" ),
` ` = c (
"[Îlots de fraîcheur - Equipements / Activités](https://opendata.paris.fr/explore/dataset/ilots-de-fraicheur-equipements-activites/information/)" ,
"Direction de la Transition Écologique et du Climat — Ville de Paris" ,
"Open Database License (ODbL)" ,
sprintf ("`data/paris/ilots-de-fraicheur-equipements-activites.parquet` (%s ko) + `arrondissements.parquet`" ,
round (file.size (if_path) / 1024 )),
format (as.Date (file.mtime (if_path)), "%d %B %Y" ),
sprintf ("%d équipements" , n_tot)
)
) |>
gt:: gt () |> gt:: fmt_markdown (columns = ` ` ) |>
gt:: tab_options (table.width = "100%" , column_labels.hidden = TRUE )
Jeu de données
Îlots de fraîcheur - Equipements / Activités
Producteur
Direction de la Transition Écologique et du Climat — Ville de Paris
Licence
Open Database License (ODbL)
Fichier
data/paris/ilots-de-fraicheur-equipements-activites.parquet (44 ko) + arrondissements.parquet
Mise à jour
04 septembre 2026
Observations
535 équipements