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
Eglise de l'immaculée Conception
Lieux de culte
14 RUE MARSOULAN
12
Non
TOILES TENDUES JARDIN DE LA DALLE DES OLYMPIADES
Ombrière temporaire
32 RUE DU JAVELOT
13
Non
Eglise Saint-Pierre de Chaillot
Lieux de culte
31 AV MARCEAU
16
Non
Terrain de boules Botzaris
Terrain de boules
72 rue Botzaris
19
Non
Brumisateur Square du Docteur Grancher
Brumisateur
9 rue de la Bidassoa
20
Non
Brumisateur Jardin Lucien Fontanarosa
Brumisateur
29 rue Cino Del Duca
17
Non
TOILES TENDUES SQUARE ULYSSE TRELAT
Ombrière temporaire
112 RUE REGNAULT
13
Non
Musée de Montmartre
Musée
12-14 Rue Cortot
18
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
09 octobre 2026
Observations
535 équipements