Lieux de tournage à Paris

Données - Ville de Paris

Code
source(here::here("_rinit.R"))
source(here::here("data", "paris", "_paris.R"))   # wkb2sfc(), arrondissements_sf()
invisible(Sys.setlocale("LC_TIME", "fr_FR.UTF-8"))
# cd ~/iCloud/website/data/paris; /usr/local/bin/R -e 'quarto::quarto_render("lieux-de-tournage-a-paris.qmd")'

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

tour_path <- here::here("data", "paris", "lieux-de-tournage-a-paris.parquet")
tournages <- arrow::read_parquet(tour_path) |>
  dplyr::mutate(
    ar = suppressWarnings(as.integer(substr(ardt_lieu, 4, 5))),
    annee = as.integer(format(annee_tournage, "%Y"))
  )

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

Chaque autorisation de tournage (cinéma, télévision, web) accordée par la Ville de Paris depuis 2016 : 14 760 tournages, avec le nom du film ou de la série, le réalisateur, le producteur et le lieu.

Code
tournages |>
  dplyr::arrange(dplyr::desc(date_debut)) |>
  dplyr::transmute(Titre = nom_tournage, Type = type_tournage, Réalisateur = nom_realisateur,
                   Lieu = adresse_lieu, Début = date_debut) |>
  head(8) |>
  gt::gt() |>
  gt::sub_missing(missing_text = "—") |>
  gt::tab_header(title = "8 tournages les plus récents") |>
  gt::tab_options(table.width = "100%")
8 tournages les plus récents
Titre Type Réalisateur Lieu Début
Champagne Problems Téléfilm Mark Steven JOHNSON 40 boulevard haussmann, 75009 paris 2024-12-18
Champagne Problems Téléfilm Mark Steven JOHNSON avenue des champs elysées, 75008 paris 2024-12-18
Des Vivants Série TV Jean-Xavier de Lestrade 4 rue de la chine, 75020 paris 2024-12-18
Champagne Problems Téléfilm Mark Steven JOHNSON 8 rue françois ier, 75008 paris 2024-12-18
Champagne Problems Téléfilm Mark Steven JOHNSON 37 rue jean goujon, 75008 paris 2024-12-18
Champagne Problems * Téléfilm Mark Steven JOHNSON 63 boulevard haussmann, 75008 paris 2024-12-18
Des Vivants Série TV Jean-Xavier de Lestrade 1 place de la bastille, 75004 paris 2024-12-17
CHAMPAGNE PROBLEMS Téléfilm Mark Steven Johnson 228 rue de l'université, 75007 paris 2024-12-17

Où tourne-t-on

Code
ggplot() +
  geom_sf(data = arr_sf, fill = "grey97", colour = "grey70", linewidth = 0.3) +
  geom_hex(data = sf::st_coordinates(pts_sf) |> tibble::as_tibble(),
           aes(X, Y), bins = 60, alpha = 0.85) +
  scale_fill_viridis_c(option = "inferno", direction = -1, trans = "sqrt", name = "Tournages") +
  coord_sf(xlim = sf::st_bbox(arr_sf)[c("xmin", "xmax")],
          ylim = sf::st_bbox(arr_sf)[c("ymin", "ymax")], expand = FALSE) +
  labs(title = "Densité des lieux de tournage") +
  theme_carte

Par arrondissement

Code
cnt <- tournages |> 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 = "rocket", direction = -1, na.value = "grey92", name = "Tournages") +
  labs(title = "Tournages par arrondissement") +
  theme_carte

Les lieux les plus filmés

Code
tournages |>
  dplyr::filter(!is.na(adresse_lieu)) |>
  dplyr::count(adresse_lieu, sort = TRUE) |>
  head(12) |>
  dplyr::mutate(adresse_lieu = stringr::str_to_title(adresse_lieu),
               adresse_lieu = forcats::fct_reorder(adresse_lieu, n)) |>
  ggplot(aes(n, adresse_lieu)) +
  geom_col(fill = "#7a5a2b", width = 0.65) +
  geom_text(aes(label = n), hjust = -0.2, size = 3) +
  scale_x_continuous(expand = expansion(mult = c(0, 0.12))) +
  labs(title = "Lieux les plus utilisés pour des tournages",
       subtitle = "Ponts et places emblématiques dominent", x = NULL, y = NULL) +
  theme_barres

Évolution et types de tournage

Code
tournages |>
  dplyr::filter(!is.na(type_tournage)) |>
  dplyr::count(annee, type_tournage) |>
  ggplot(aes(annee, n, fill = type_tournage)) +
  geom_col(width = 0.7) +
  scale_fill_brewer(palette = "Set2", name = NULL) +
  scale_x_continuous(breaks = scales::breaks_width(1)) +
  labs(title = "Tournages par an", x = NULL, y = NULL) +
  theme_barres +
  theme(legend.position = "bottom", axis.text.x = element_text(angle = 45, hjust = 1))

Les réalisateurs les plus présents

Code
tournages |>
  dplyr::filter(!is.na(nom_realisateur), nom_realisateur != "") |>
  dplyr::count(nom_realisateur, sort = TRUE) |>
  head(10) |>
  dplyr::mutate(nom_realisateur = forcats::fct_reorder(nom_realisateur, n)) |>
  ggplot(aes(n, nom_realisateur)) +
  geom_col(fill = "#3b6f8a", width = 0.6) +
  geom_text(aes(label = n), hjust = -0.2, size = 3) +
  scale_x_continuous(expand = expansion(mult = c(0, 0.12))) +
  labs(title = "Réalisateurs avec le plus de tournages à Paris", x = NULL, y = NULL) +
  theme_barres

Tous les tournages

Code
tournages |>
  dplyr::arrange(dplyr::desc(date_debut)) |>
  dplyr::transmute(Titre = nom_tournage, Type = type_tournage, Réalisateur = nom_realisateur,
                   Lieu = adresse_lieu, Arrondissement = ar, Début = date_debut, Fin = date_fin) |>
  reactable::reactable(
    searchable = TRUE,
    filterable = TRUE,
    pagination = TRUE,
    defaultPageSize = 20,
    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(
      Titre = reactable::colDef(minWidth = 180),
      Type = reactable::colDef(minWidth = 100),
      Réalisateur = reactable::colDef(minWidth = 140),
      Lieu = reactable::colDef(minWidth = 200),
      Arrondissement = reactable::colDef(minWidth = 70, maxWidth = 110),
      Début = reactable::colDef(minWidth = 90, maxWidth = 110),
      Fin = reactable::colDef(minWidth = 90, maxWidth = 110)
    )
  )

Source & données

Code
tibble::tibble(
  ` ` = c("Jeu de données", "Producteur", "Licence", "Fichier", "Mise à jour", "Observations"),
  `  ` = c(
    "[Lieux de tournage à Paris](https://opendata.paris.fr/explore/dataset/lieux-de-tournage-a-paris/information/)",
    "Bureau des Tournages — Ville de Paris",
    "Open Database License (ODbL)",
    sprintf("`data/paris/lieux-de-tournage-a-paris.parquet` (%s ko) + `arrondissements.parquet`",
            round(file.size(tour_path) / 1024)),
    format(as.Date(file.mtime(tour_path)), "%d %B %Y"),
    sprintf("%s tournages, %d-%d", format(n_tot, big.mark = " "), min(tournages$annee), max(tournages$annee))
  )
) |>
  gt::gt() |> gt::fmt_markdown(columns = `  `) |>
  gt::tab_options(table.width = "100%", column_labels.hidden = TRUE)
Jeu de données Lieux de tournage à Paris
Producteur Bureau des Tournages — Ville de Paris
Licence Open Database License (ODbL)
Fichier data/paris/lieux-de-tournage-a-paris.parquet (1013 ko) + arrondissements.parquet
Mise à jour 05 septembre 2026
Observations 14 760 tournages, 2016-2024