Restaurants du CASVP

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

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

rest_path <- here::here("data", "paris", "restaurants-casvp.parquet")
rest <- arrow::read_parquet(rest_path) |>
  dplyr::filter(!is.na(nom_restaurant)) |>
  dplyr::mutate(
    categorie = dplyr::recode(type, E = "Émeraude (seniors)", S = "Solidarité"),
    ar        = suppressWarnings(as.integer(substr(code, 4, 5)))
  )

n_tot <- nrow(rest)
arr_sf <- arrondissements_sf()
pts_sf <- rest |>
  dplyr::mutate(geometry = wkb2sfc(tt)) |>
  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))
pal_cat <- c("Émeraude (seniors)" = "#3b6f8a", "Solidarité" = "#c0392b")

Le CASVP (Centre d’Action Sociale de la Ville de Paris) exploite 42 restaurants dans deux réseaux : les restaurants Émeraude, ouverts aux Parisiens de 60 ans et plus à tarif subventionné, et les restaurants Solidarité, pour les personnes en situation de précarité.

Code
rest |>
  dplyr::count(categorie, name = "Restaurants") |>
  gt::gt() |>
  gt::tab_options(table.width = "100%")
categorie Restaurants
Solidarité 7
Émeraude (seniors) 35

Carte

Code
ggplot() +
  geom_sf(data = arr_sf, fill = "grey96", colour = "white") +
  geom_sf(data = pts_sf, aes(colour = categorie), size = 2.2, alpha = 0.9) +
  scale_colour_manual(values = pal_cat, name = NULL) +
  labs(title = "Restaurants du CASVP",
       subtitle = "Émeraude (seniors) et Solidarité") +
  theme_carte +
  theme(legend.position = "bottom")

Carte interactive

Code
pal <- leaflet::colorFactor(unname(pal_cat), domain = names(pal_cat))

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 = 6, stroke = FALSE, fillOpacity = 0.85,
    fillColor = ~pal_cat[categorie],
    label = ~nom_restaurant,
    popup = ~sprintf("<b>%s</b><br>%s<br>%s", nom_restaurant, adresse, categorie)
  ) |>
  leaflet::addLegend("bottomright", pal = pal, values = ~categorie, title = NULL, opacity = 0.9)

Liste complète

Code
rest |>
  dplyr::arrange(ar, nom_restaurant) |>
  dplyr::transmute(Nom = nom_restaurant, Adresse = adresse, Arrondissement = ar,
                   Catégorie = categorie) |>
  reactable::reactable(
    searchable = TRUE,
    filterable = TRUE,
    pagination = FALSE,
    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 = 160),
      Adresse = reactable::colDef(minWidth = 220),
      Arrondissement = reactable::colDef(minWidth = 70, maxWidth = 120),
      Catégorie = reactable::colDef(minWidth = 130)
    )
  )

Source & données

Code
tibble::tibble(
  ` ` = c("Jeu de données", "Producteur", "Licence", "Fichier", "Mise à jour", "Observations"),
  `  ` = c(
    "[Restaurants CASVP](https://opendata.paris.fr/explore/dataset/restaurants-casvp/information/)",
    "Centre d'Action Sociale de la Ville de Paris (CASVP)",
    "Open Database License (ODbL)",
    sprintf("`data/paris/restaurants-casvp.parquet` (%s ko)", round(file.size(rest_path) / 1024)),
    format(as.Date(file.mtime(rest_path)), "%d %B %Y"),
    sprintf("%d restaurants", n_tot)
  )
) |>
  gt::gt() |> gt::fmt_markdown(columns = `  `) |>
  gt::tab_options(table.width = "100%", column_labels.hidden = TRUE)
Jeu de données Restaurants CASVP
Producteur Centre d’Action Sociale de la Ville de Paris (CASVP)
Licence Open Database License (ODbL)
Fichier data/paris/restaurants-casvp.parquet (4 ko)
Mise à jour 04 septembre 2026
Observations 42 restaurants