Sanisettes et toilettes publiques

Données - Ville de Paris

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("sanisettesparis.qmd")'

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                      fig.width = 8, fig.height = 5, dpi = 150)

sani_path <- here::here("data", "paris", "sanisettesparis.parquet")
sani <- arrow::read_parquet(sani_path) |>
  dplyr::mutate(ar = suppressWarnings(as.integer(substr(arrondissement, 4, 5))))

n_tot   <- nrow(sani)
arr_sf  <- arrondissements_sf()
pts_sf  <- sani |>
  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())

610 toilettes publiques gratuites, essentiellement des sanisettes automatiques. 95% en service, 83% accessibles aux personnes à mobilité réduite.

Code
sani |>
  dplyr::transmute(Type = type, Adresse = adresse, Arrondissement = ar,
                   Statut = statut, `Accès PMR` = acces_pmr, Horaire = horaire) |>
  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%")
8 équipements tirés au hasard
Type Adresse Arrondissement Statut Accès PMR Horaire
Sanisette 5 pl violet 15 En service Oui 06h00 - 22h00
Sanisette 12 all thomy-thierry 7 En service Oui 06h00 - 22h00
Sanisette 23 rue du depart 14 En service Oui 24/24h
Sanisette 81 qu de valmy 10 En service Oui 24/24h
WC 1 place de la republique dominicaine 8 En service Non Horaires du parc
WC 8 avenue de la sibelle 14 En service Non Horaires du parc
Sanisette 58 av de la republique 11 En service Oui 24/24h
WC 17 allee de la deuxieme db 15 En service Non Horaires du parc

Carte

Code
pal <- leaflet::colorFactor(c("#2f6f4f", "#c0392b"), domain = c("En service", "Hors service"))

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 = 4, stroke = FALSE, fillOpacity = 0.8,
    fillColor = ~pal(statut),
    label = ~sprintf("%s — %s", type, adresse),
    popup = ~sprintf("<b>%s</b><br>%s<br>%s<br>Horaire : %s<br>PMR : %s",
                     type, adresse, statut, horaire, acces_pmr)
  ) |>
  leaflet::addLegend("bottomright", pal = pal, values = ~statut, title = "Statut", opacity = 0.9)

Par arrondissement

Code
cnt <- sani |> 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 = "Toilettes") +
  labs(title = "Toilettes publiques par arrondissement") +
  theme_carte

Types et accessibilité

Code
sani |>
  dplyr::count(type, sort = TRUE) |>
  dplyr::mutate(type = forcats::fct_reorder(type, n)) |>
  ggplot(aes(n, type)) +
  geom_col(fill = "#3b6f8a", width = 0.6) +
  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 = "Sanisette automatique et WC classiques dominent — un seul urinoir femme recensé",
       x = NULL, y = NULL) +
  theme_barres

Source & données

Code
tibble::tibble(
  ` ` = c("Jeu de données", "Producteur", "Licence", "Fichier", "Mise à jour", "Observations"),
  `  ` = c(
    "[Sanisettes de Paris](https://opendata.paris.fr/explore/dataset/sanisettesparis/information/)",
    "Direction de la Voirie et des Déplacements — Ville de Paris",
    "Open Database License (ODbL)",
    sprintf("`data/paris/sanisettesparis.parquet` (%s ko) + `arrondissements.parquet`",
            round(file.size(sani_path) / 1024)),
    format(as.Date(file.mtime(sani_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 Sanisettes de Paris
Producteur Direction de la Voirie et des Déplacements — Ville de Paris
Licence Open Database License (ODbL)
Fichier data/paris/sanisettesparis.parquet (39 ko) + arrondissements.parquet
Mise à jour 05 septembre 2026
Observations 610 équipements