---
title: "Production énergétique par déchets incinérés"
subtitle: "Production électrique et vente de chaleur, Vaud"
lang: fr
author: "DGE-DIREN"
date: last-modified # Renvoie automatiquement la date de dernière modification du .qmd
params: # ! `open_params_metadata_help()` pour des instructions de remplissage détaillées
fonction: 3 # Valeur numérique : 0=Non-défini/1=Description/2=Orientation/3=Pilotage
nature: 2 # Valeur numérique : 0=Non-défini/1=Actions/2=Effets/3=Impacts
idThematique: 08.02.05.72 # Identifiant selon nomenclature obsind theme/sous-theme/objet/id (p.ex. 08.03.01)
niveauPublication: 2 # Valeur numérique : 0=Non-défini/1=Interne/2=Public. Tout autre choix génère un avertissement
niveauDetail: Canton # Texte libre qui indique le niveau minimal d'agrégation disponible pour l'indicateur (canton, commune, région, installation, véhicule, etc.)
frequenceMAJ: Annuel # Texte libre, idéalement à choisir parmi les codes suivants : mensuel/semestriel/annuel/biannuel/mensuel/tous les x ans/non-défini
moisMAJ: 9 # Valeur numérique : 0=Non-défini/1=Janvier/2=Février, etc.
disponibleDepuis: 2015 # Valeur numérique Année (aaaa) (p.ex. 2000)
personneReference: Steve Ducommun # Prénom+Nom de la personne référente de l'indicateur
mailReference: stat.energie@vd.ch # E-mail ACV (générique ou nominal, se terminant par @vd.ch)
uuid: 5941d238-4511-4f0b-a681-c09341122d1e # !NE PAS MODIFIER! Identifiant unique généré automatiquement à la création de la fiche
uuidParent: null # Identifiant(s) unique(s) des indicateurs parents de l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
uuidEnfant: null # Identifiant(s) unique(s) des indicateurs enfants de l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
uuidConnexe: null # Identifiant(s) unique(s) des indicateurs connexes à l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
majCatalogue: 1 # Valeur numérique : 0=Non/1=Oui pour mettre à jour les métadonnées dans le catalogue des indicateurs (connexion au disque partagé ObsInd requise)
format:
html:
other-links: # Copier la structure ci-dessous pour remplacer/ajouter d'autres liens sous la table des matières
- text: Infos statistiques énergie
href: 'https://www.vd.ch/environnement/energie/chiffres-cles-et-statistiques-energie-vaud/'
target: '_blank'
- text: Profil climatique communes
href: 'https://stat-climat-vd.ch/profil-climat/'
target: '_blank'
- text: Direction de l'énergie
href: 'https://www.vd.ch/djes/dge/dge-diren'
target: '_blank'
metadata-files: # Ne pas supprimer !
- assets/format-options.yml
editor_options:
chunk_output_type: console
---
<!-- Les métadonnées ci-dessus doivent être remplies pour chaque fiche. Lorsqu'un champ n'est disponible, il est possible d'écrire "" ou NULL -->
<!-- Aide au remplissage : `obsindVD::open_aide_remplissage_help()` (lancer la ligne de code dans la console) -->
```{r setup}
#| echo: false
#| warning: false
#| message: false
#| results: asis
# version: 1.2.2 (01.09.2026)
# -----------------------------------------------------------------------------
# Ne rien modifier dans ce bloc de code !
# Ce bloc doit être lancé pour charger les métadonnées dans l'environnement !
# -----------------------------------------------------------------------------
# update_model_setup_code() pour mettre à jour ce bloc avec la version du dernier modèle
# Chargement (ou installation) des librairies disponibles sur CRAN
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, readxl, glue, gt, DT, ggiraph, scales, ggtext)
# Chargement de la librairie obsindVD privée
# Pour l'installation : suivre les instructions dans le BitBucket : https://dsigit.etat-de-vaud.ch/outils/git/projects/DGE/repos/obsind/
# Si l'accès n'est pas autorisé, faire une demande à l'Observatoire des indicateurs
library(obsindVD)
# Par défaut : ouvrir l'aide obsindVD (supprimer cette ligne si superflu)
open_fiche_quarto_help()
# Vérifie, ajoute et insère des valeurs par défaut pour les métadonnées manquantes (en-tête YAML)
complete_metadata_params()
# Extraction + validation des métadonnées (en-tête YAML)
selected_metadata <- return_selected_metadata()
# Ajout de l'identifiant dans les en-têtes du document html
display_identifiant(value = selected_metadata[['Identifiant thématique']])
```
::: {.callout-tip .narrow icon="false" collapse="true"}
# Métadonnées de l'indicateur
```{r}
# --------------------------------------
# Présentation des métadonnées ----
# --------------------------------------
tidyr::tibble(
`Attribut` = names(selected_metadata),
`Valeur` = selected_metadata
) |>
gt_table_ind()
```
:::
```{r}
# Préciser quelle est l'année maximale recherchée (permet d'automatiser la recherche du bon dossier et fichier pour les données PRONOVO)
an_max <- 2025
```
```{r}
# ---------------------------------------------------------
# Tableau de synthèse ----
# ---------------------------------------------------------
# Pour de l'aide sur comment remplir ce tableau de synthèse lancer la commande suivante dans la console :
# obsindVD::open_tableau_synthese_help()
# Pour afficher l'aide spécifique à une fonction, ajouter '?' avant l'appel de la fonction :
# ?icon_up()
tableau_synthese <- list(
# Premier indicateur... attention à la structure !
list(
titre_indicateur = "Production **électrique** par déchets incinérables, part renouvelable <b>[GWh]</b>",
valeur_2025 = 82.6,
obj_2030 = 30, # valeur numérique OU icônes de flèches
obj_2040 = NA,
obj_2050 = 30,
tendance_observée = icon_flat(type = "trend", text = paste0("2019-", an_max)), #icon_up(type = "trend", text = "2020-2024"), # icon_up(), icon_flat(), icon_down()
tendance_évaluée = "..." # icon_meh() # icon_happy(), icon_meh(), icon_sad()
),
# Second indicateur... Répliquer la même structure autant de fois que d'indicateurs à afficher dans le tableau de synthèse
list(
titre_indicateur = "Production **thermique** par déchets incinérables, part renouvelable <b>[GWh]</b>",
valeur_2025 = 288,
obj_2030 = 240, # valeur numérique OU icônes de flèches
obj_2040 = NA, #icon_up(type = "obj"), # On peut modifier 'Cible non chiffrée' en modifiant l'argument text = "" par exemple pour ne rien afficher
obj_2050 = 240,
tendance_observée = icon_flat(type = "trend", text = paste0("2019-", an_max)), #icon_up(type = "trend", text = "2020-2024"), # text obligatoire pour type = 'trend'
tendance_évaluée = NA #icon_happy(tooltip = "Exemple d'info-bulle personnalisé") # 'tooltip' modifie l'info-bulle par défaut
)
)
# Impression du tableau de synthèse
print_tableau_synthese(tableau_synthese) # Le résultat peut être customisé comme un objet {gt}
```
# Description {#sec-description}
Cet indicateur informe sur la valorisation énergétique de l’incinération des déchets : production électrique et vente de chaleur. Il traduit l’évolution de la production locale d’électricité et de chaleur par les usines d’incinération des ordures ménagères.
# Cadre de référence {#sec-cadre-reference}
Les objectifs de la production d’énergie électrique et thermique à partir de déchets incinérables sont définis dans la Conception cantonale de l’énergie ([CoCEn 2019](https://www.vd.ch/fileadmin/user_upload/themes/environnement/energie/fichiers_pdf/CoCEn_Pub_complete_20190816.pdf)). Ils visent à maintenir la production de déchets et par conséquent la production électrique attribuable à des sources renouvelables à 30 GWh<sub>él</sub> par an et celle de de la production de chaleur à 240 GWh<sub>th</sub>.
# Graphique {#sec-graphique}
```{r}
# Lecture des données
#--------------------------------------------------------------------------
# 1 - Données de production
#Les données du document data_brut.xlsx doit avoir été préparé
data_brut_read <- readxl::read_excel(("./data/data_brut.xlsx"),
sheet = "data_final")
data_long <- data_brut_read |>
pivot_longer(
cols = -1, # toutes les colonnes sauf la 1ère
names_to = "ANNEE",
values_to = "VALEUR"
)
# ---------------------------------------------------------
# 2 - Objectifs CoCEn
# A créer une fois
# # obj_electrique : objectifs de production électrique à partir de déchets incinérables
# obj_electrique <- tibble(
# ANNEE = c(2030, 2050),
# GWH = c(30, 30)
# )
# write_delim(obj_electrique,"./data/obj_electrique.csv", delim = ";")
# # obj_thermique : objectifs de production thermique à partir de déchets incinérables
# obj_thermique <- tibble(
# ANNEE = c(2030, 2050),
# GWH = c(120, 120)
# )
# write_delim(obj_thermique,"./data/obj_thermique.csv", delim = ";")
obj_electrique <- read_delim("./data/obj_electrique.csv", delim = ";")
obj_thermique <- read_delim("./data/obj_thermique.csv", delim = ";")
# # ---------------------------------------------------------
# # 4 - Population
#
# # Variables sont : ANNEE et HABITANTS
#
# tryCatch(
# expr = {
# read_delim("P:/DIREN/02 PILOTAGE DIREN/02.11 Bases de donnees/POPULATION/04_extractions_traitees/population.csv", delim=";") |>
# write_delim("./data/population.csv", delim = ";")
# },
# error = function(e) message("Attention: la table population n'a pas pu être réactualisée avec les données brutes du P:/ ", e$message)
# )
#
# population <- read_delim("./data/population.csv", delim = ";") |>
# filter(ANNEE >= 2015 & ANNEE <= an_max)
```
```{r }
#| label: fig-G1
##| fig-cap: "Production électrique à partir de déchets incinérables, Vaud"
#| fig.width: 8
#| fig.asp: 0.6
# Graphique Production ELECTRIQUE
# créer data ressources
ressources <- data_long |>
# ne garder que production d'Electricité
filter(VARIABLES %in% c("Electrique renouvelable", "Electrique non renouvelable")) |>
rename(GWH = VALEUR) |>
mutate(ANNEE = as.numeric(ANNEE))
# créer data objectifs (uniquement objectifs des totaux)
objectifs <- obj_electrique |>
mutate(ANNEE = as.numeric(ANNEE))
# Ajouter un trou pour séparer les consommations des objectifs
last_year <- max(ressources$ANNEE, na.rm = TRUE)
gap1 <- last_year + 1 # entre dernière année et 2030
gap2 <- 2030 + 1 # entre 2030 et 2050
annees_hist <- sort(unique(ressources$ANNEE))
annees_levels <- c(
annees_hist,
gap1,
2030,
gap2,
2050
)
# Ajout les trous à chaque dataset
add_missing_years_prod <- function(df) {
df |>
tidyr::complete(
ANNEE = annees_levels,
VARIABLES
)
}
add_missing_years_simple <- function(df) {
df |>
tidyr::complete(
ANNEE = annees_levels
)
}
ressources <- add_missing_years_prod(ressources) |>
mutate(GWH = tidyr::replace_na(GWH, 0))
objectifs <- add_missing_years_simple(objectifs)
# ordrer les ressources selon la quantité
ordre_type <- ressources |>
filter(ANNEE == last_year) |>
arrange(GWH) |>
pull(VARIABLES)
tous_les_types <- c(ordre_type,"Objectifs CoCEn 2019" )
annees_labels <- as.character(annees_levels)
ressources <- ressources |>
mutate(
ANNEE = factor(as.character(ANNEE), levels = annees_labels),
VARIABLES = factor(as.character(VARIABLES), levels = tous_les_types),
GWH = as.numeric(tidyr::replace_na(GWH, 0))
)
objectifs <- objectifs |>
mutate(
ANNEE = factor(as.character(ANNEE), levels = annees_labels),
VARIABLES = factor("Objectifs CoCEn 2019", levels = tous_les_types),
GWH = as.numeric(tidyr::replace_na(GWH, 0))
)
g1_plot <- ggplot() +
# Bars (objectives )
geom_col_interactive(
data = objectifs,
aes(x = ANNEE, y = GWH, fill = VARIABLES,
tooltip = paste0("Objectifs de production électrique à partir de déchets incinérables en ", ANNEE, " : ", round(GWH, 0), " GWh"),
data_id = as.character(ANNEE)),
width = 0.7,
color = NA
) +
geom_col_interactive(
data = ressources,
aes(
x = ANNEE,
y = GWH,
fill = VARIABLES,
tooltip =paste0("Production ", as.character(VARIABLES), " à partir de déchets incinérables en ", ANNEE, " : ", round(GWH, 0), " GWh"),
data_id = paste0(as.character(ANNEE), as.character(VARIABLES))),
width = 0.7,
position = "stack",
color = NA
) +
scale_y_continuous(
name = "Production électrique [GWh]",
labels = scales::label_number(big.mark = "'", decimal.mark = "."),
expand = expansion(mult = c(0, 0.1))
) +
scale_fill_manual(
values = c(
"Electrique non renouvelable" ="grey60",
"Electrique renouvelable" ="yellow2",
"Objectifs CoCEn 2019" = "grey80"
),
breaks = tous_les_types,
labels = c(
"Electrique non renouvelable" ="Part non renouvelable de l'électricité produite",
"Electrique renouvelable" ="Part renouvelable de l'électricité produite",
"Objectifs CoCEn 2019" = "Objectifs CoCEn part renouvelable"
),
name = NULL
) +
guides(
fill = guide_legend(nrow = 2, byrow = FALSE) # légendes sur 2 lignes d'un histogramme
)+
scale_x_discrete(
drop = FALSE,
labels = function(x) {
num_x <- as.numeric(as.character(x))
ifelse(
num_x %in% c(gap1, gap2),
"", # cacher les gaps
ifelse(num_x %% 5 == 0, num_x, "") # afficher seulement tous les 5 ans
)
}
)+
# Titles and caption
labs(
title = str_wrap("**Production electrique à partir de déchets incinérables**", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
subtitle = str_wrap("Part renouvelable et non renouvelable, Vaud", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
x = NULL,
caption = "Source: Pronovo<br>Etat au 31.12.2025"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_markdown(face = "bold", size = 12),
plot.subtitle = element_markdown(size = 10),
plot.caption = element_markdown(hjust = 0, size = 9, margin = margin(t = 5), face = "italic"), # !! MWR: rajout italic
plot.caption.position = "plot",
plot.margin = margin(10, 10, 30, 10),
legend.position = "bottom",
legend.box = "vertical",
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
axis.text = element_text(size = 8),
axis.title = element_text(size = 10)
)
obsindVD::girafe_light(g1_plot,
# !!MWR : modification du comportement de surlignage : on ajoute de la transparence aux éléments non-survolés !
options = list(
opts_hover_inv(css = "opacity:0.5;"),
opts_hover(css = "opacity:1;"),
# Ajout du nom du PNG téléchargé + remplacement de 'download' par 'télécharger' (survol icône)
opts_toolbar(
position = "topright",
hidden = c("zoom", "selection"),
pngname = paste0(selected_metadata[['Identifiant thématique']], "_G1"),
tooltips = list(
saveaspng = "Télécharger"
)
)
)
)
ggsave(glue("./images/g1_Production_electrique_incinerable_2015-{an_max}.png"), width = 8, height = 6, dpi = 300)
```
```{r}
#| label: fig-G2
##| fig-cap: "Production thermique à partir de déchets incinérables, Vaud"
#| fig.width: 8
#| fig.asp: 0.6
# Graphique Production THERMIQUE
# créer data ressources
ressources <- data_long |>
# ne garder que production d'Electricité
filter(VARIABLES %in% c("Thermique renouvelable", "Thermique non renouvelable")) |>
rename(GWH = VALEUR) |>
mutate(ANNEE = as.numeric(ANNEE))
# créer data objectifs (uniquement objectifs des totaux)
objectifs <- obj_thermique |>
mutate(ANNEE = as.numeric(ANNEE))
# Ajouter un trou pour séparer les consommations des objectifs
last_year <- max(ressources$ANNEE, na.rm = TRUE)
gap1 <- last_year + 1 # entre dernière année et 2030
gap2 <- 2030 + 1 # entre 2030 et 2050
annees_hist <- sort(unique(ressources$ANNEE))
annees_levels <- c(
annees_hist,
gap1,
2030,
gap2,
2050
)
# Ajout les trous à chaque dataset
add_missing_years_prod <- function(df) {
df |>
tidyr::complete(
ANNEE = annees_levels,
VARIABLES
)
}
add_missing_years_simple <- function(df) {
df |>
tidyr::complete(
ANNEE = annees_levels
)
}
ressources <- add_missing_years_prod(ressources) |>
mutate(GWH = tidyr::replace_na(GWH, 0))
objectifs <- add_missing_years_simple(objectifs)
# ordrer les ressources selon la quantité
ordre_type <- ressources |>
filter(ANNEE == last_year) |>
arrange(GWH) |>
pull(VARIABLES)
tous_les_types <- c(ordre_type, "Objectifs CoCEn 2019")
annees_labels <- as.character(annees_levels)
ressources <- ressources |>
mutate(
ANNEE = factor(as.character(ANNEE), levels = annees_labels),
VARIABLES = factor(as.character(VARIABLES), levels = tous_les_types),
GWH = as.numeric(tidyr::replace_na(GWH, 0))
)
objectifs <- objectifs |>
mutate(
ANNEE = factor(as.character(ANNEE), levels = annees_labels),
VARIABLES = factor("Objectifs CoCEn 2019", levels = tous_les_types),
GWH = as.numeric(tidyr::replace_na(GWH, 0))
)
g2_plot <- ggplot() +
# Bars (objectives )
geom_col_interactive(
data = objectifs,
aes(x = ANNEE, y = GWH, fill = VARIABLES,
tooltip = paste0("Objectifs de production thermique à partir de déchets incinérables en ", ANNEE, " : ", round(GWH, 0), " GWh"),
data_id = as.character(ANNEE)),
width = 0.7,
color = NA
) +
geom_col_interactive(
data = ressources,
aes(
x = ANNEE,
y = GWH,
fill = VARIABLES,
tooltip =paste0("Production ", as.character(VARIABLES), " à partir de déchets incinérables en ", ANNEE, " : ", round(GWH, 0), " GWh"),
data_id = paste0(as.character(ANNEE), as.character(VARIABLES))),
width = 0.7,
position = "stack",
color = NA
) +
scale_fill_manual(
values = c(
"Thermique non renouvelable" ="grey60",
"Thermique renouvelable" ="orange1",
"Objectifs CoCEn 2019" = "grey80"
),
breaks = tous_les_types,
labels = c(
"Thermique non renouvelable" ="Part non renouvelable de la chaleur produite",
"Thermique renouvelable" ="Part renouvelable de la chaleur produite",
"Objectifs CoCEn 2019" = "Objectifs CoCEn part renouvelable"
),
name = NULL
) +
scale_y_continuous(
name = "Production thermique [GWh]",
labels = scales::label_number(big.mark = "'", decimal.mark = "."),
expand = expansion(mult = c(0, 0.1))
) +
scale_x_discrete(
drop = FALSE,
labels = function(x) {
num_x <- as.numeric(as.character(x))
ifelse(
num_x %in% c(gap1, gap2),
"", # cacher les gaps
ifelse(num_x %% 5 == 0, num_x, "") # afficher seulement tous les 5 ans
)
}
)+
guides(
fill = guide_legend(nrow = 2, byrow = FALSE) # légendes sur 2 lignes d'un histogramme
)+
# Titles and caption
labs(
title = str_wrap("**Production thermique à partir de déchets incinérables**", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
subtitle = str_wrap("Part renouvelable et non renouvelable, Vaud", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
x = NULL,
caption = "Source: DGE-DIREN / TRIDEL<br>Etat au 17.08.2026"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_markdown(face = "bold", size = 12),
plot.subtitle = element_markdown(size = 10),
plot.caption = element_markdown(hjust = 0, size = 9, margin = margin(t = 5), face = "italic"), # !! MWR: rajout italic
plot.caption.position = "plot",
plot.margin = margin(10, 10, 30, 10),
legend.position = "bottom",
legend.box = "vertical",
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
axis.text = element_text(size = 8),
axis.title = element_text(size = 10)
)
obsindVD::girafe_light(g2_plot,
# !!MWR : modification du comportement de surlignage : on ajoute de la transparence aux éléments non-survolés !
options = list(
opts_hover_inv(css = "opacity:0.5;"),
opts_hover(css = "opacity:1;"),
# Ajout du nom du PNG téléchargé + remplacement de 'download' par 'télécharger' (survol icône)
opts_toolbar(
position = "topright",
hidden = c("zoom", "selection"),
pngname = paste0(selected_metadata[['Identifiant thématique']], "_G2"),
tooltips = list(
saveaspng = "Télécharger"
)
)
)
)
ggsave(glue("./images/g2_Production_thermique_incinerable_2015-{an_max}.png"), width = 8, height = 6, dpi = 300)
```
# Analyse {#sec-analyse}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
## Description statistique {#sec-analyse-description}
L’électricité produite sur le territoire vaudois à partir de déchets incinérables (2025 : 83 GWh<sub>él</sub>) est relativement stable depuis 2017, avec un léger pic en 2021 (91 GWh<sub>él</sub>; voir @fig-G1). La moitié de cette production est attribuée à de l’énergie renouvelable. L'objectif est de maintenir une production électrique annuelle de 30 GWh<sub>él</sub> par des déchets incinérés.
La chaleur produite sur le territoire vaudois à partir de déchets incinérables (2025 : 288 GWh<sub>th</sub>) est relativement stable depuis 2015, fluctuant entre 271 et 317 GWh<sub>th</sub> par an (voir @fig-G2). La moitié de cette production est attribuée à de l’énergie renouvelable. L'objectif est de maintenir une production thermique annuelle de 240 GWh<sub>th</sub> par des déchets incinérés.
## Interprétation {#sec-analyse-interpretation}
La situation actuelle et l’évolution ne sont pas évaluée, que ce soit pour la production électrique ou thermique : il n’est pas souhaité d’augmenter les déchets incinérables sur le territoire vaudois, mais uniquement de les valoriser d'un point de vue énergétique.
## Périmètre et limites {#sec-analyse-perimetre}
Pour la production thermique, seule la chaleur vendue à des tiers a été retenue.
# Tableaux {#sec-tableaux}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
```{r}
#| label: tbl-T1
##| tbl-cap: "Production énergétique de déchets incinérables, Vaud"
# préparer les données par ressources (pivot_wider)
# AJOUTER les objectifs
obj_elec_long <- obj_electrique |>
rename(VALEUR = GWH) |>
mutate(VARIABLES = "Electrique renouvelable",
ANNEE= as.character(ANNEE))
obj_therm_long <- obj_thermique |>
rename(VALEUR = GWH) |>
mutate(VARIABLES = "Thermique renouvelable",
ANNEE= as.character(ANNEE))
data_avec_objectifs <- data_long |>
bind_rows(obj_elec_long, obj_therm_long)
# Créer le total et enlever les non renouvelables
df <- data_avec_objectifs |>
pivot_wider(names_from = VARIABLES, values_from = VALEUR) |>
mutate(`Electrique Total` = `Electrique renouvelable` + `Electrique non renouvelable`,
`Thermique Total` = `Thermique renouvelable` + `Thermique non renouvelable`) |>
select(ANNEE, `Electrique Total`, `Electrique renouvelable`, `Thermique Total`, `Thermique renouvelable`)
t1 <- df |>
mutate(across(-ANNEE, \(col) na_if(col, y = 0))) |> # on change les 0 en NA comme ça sub_missing() ci-après transforme les 0 et les NA en "-" (par exemple)
gt() |>
tab_header(title = md("**Production énergétique de déchets incinérables**"),
subtitle = "Production électrique et thermique, Vaud") |>
# Gestion des NA : remplace les cases vides par un tiret
sub_missing(columns = -ANNEE, missing_text = "—" ) |>
fmt_number(columns = -ANNEE, sep_mark = "'", decimals = 0) |>
cols_label(
ANNEE = "Année"
) |>
cols_width(everything() ~ pct(100 / ncol(df))) |>
tab_spanner(label = "Production électrique",
columns = c("Electrique Total", "Electrique renouvelable"), level = 1) |>
tab_spanner(label = "Production thermique",
columns = c("Thermique Total", "Thermique renouvelable"), level = 1) |>
tab_style(style = cell_text(weight = "bold"),
locations = list(cells_column_labels(),
cells_body(columns = c(ANNEE, "Electrique renouvelable", "Thermique renouvelable")))) |>
tab_style(
style = cell_text(align = "center"),
locations = cells_column_labels()
) |>
tab_style(
style = cell_text(align = "left"),
locations = cells_column_labels(columns = ANNEE)
) |>
tab_style(
style = cell_text(align = "left"),
locations = list(cells_footnotes(), cells_source_notes())
) |>
tab_style(
style = cell_text(weight = "bold"),
locations = list(cells_column_spanners(), cells_column_labels())) |>
cols_align(align = "center", columns = -ANNEE) |>
cols_align(align = "left", columns = ANNEE) |>
cols_label(
ANNEE = "Année",
`Electrique Total` = "Total",
`Electrique renouvelable` = "Uniquement renouvelable",
`Thermique Total` = "Total",
`Thermique renouvelable` = "Uniquement renouvelable"
) |>
cols_label_with(
columns = -c(ANNEE),
fn = \(col) md(paste0(col, "\n\n[GWh]"))
) |>
tab_style(style = cell_borders(sides = "all"),
locations = list(cells_column_labels(), cells_column_spanners())) |>
tab_style(style = cell_borders(sides = c("left", "right")),
locations = list(cells_body())) |>
tab_options(column_labels.border.bottom.color = "black") |>
tab_footnote(footnote = "Objectifs définis dans la conception cantonale de l'énergie (CoCEn 2019).",
locations = cells_body(columns = ANNEE, rows = as.numeric(as.character(ANNEE)) > year(Sys.Date())),
placement = "right") |>
tab_footnote(footnote = "La part renouvelable des déchets incinérables est estimée à 50% (source: OFEN).",
locations = cells_column_labels(columns = c("Electrique renouvelable", "Thermique renouvelable")),
placement = "right") |>
tab_style(
style = cell_borders(sides = "top", style = "dashed", color = "lightgrey", weight = px(1)),
locations = cells_body(rows = as.numeric(as.character(ANNEE)) == min(as.numeric(as.character(objectifs$ANNEE)))) # applies to first row
) |>
opt_table_outline(style = "solid", width = px(2), color = "lightgrey") |>
tab_source_note(
source_note = md("*Sources : DGE-DIREN / Pronovo / TRIDEL<br>Etat au 17.08.2026*")
)
t1
gtsave(t1, glue("./images/t1_Production_energetique_incinerable_2015-{an_max}.html"))
```
# Méthode {#sec-methode}
La production d’énergie électrique et thermique issue de l’incinération des déchets est estimée à partir des données fournies par Pronovo (pour l’électricité) et du rapport de gestion de TRIDEL (pour le thermique). Afin d’isoler la part renouvelable, un facteur de 0,5 est appliqué à ces deux formes d’énergie. Cette approximation repose sur une analyse de la composition des déchets incinérés ([OFEN, 2023](https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken/teilstatistiken.html)), qui indique qu’environ 50 % de ces derniers sont constitués de matières renouvelables telles que le bois, le papier, le carton et les déchets végétaux. Les détails des méthodes de calcul se trouvent dans une fiche méthode pour le calcul de la production énergétique par déchets incinérables (voir sous @sec-ref-fiches).
# Comparaison {#sec-comparaison}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
# Références {#sec-ref}
## Fiches associées {#sec-ref-fiches}
**Fiches Méthode** :
* MET_08.02.05.72 : Méthode pour le calcul de la production énergétique par déchets incinérables (*disponible sur demande*)
**Fiches Indicateur** :
* [IND_08.02.02.01 : Production électrique de sources renouvelables et non renouvelables, Vaud](https://stat-climat-vd.ch/fiches-indicateurs/themes/energie/IND_08.02.02.01_Production_Electrique_Total.html)
* [IND_08.02.03.02 : Production thermique de sources renouvelables, Vaud](https://stat-climat-vd.ch/fiches-indicateurs/themes/energie/IND_08.02.03.02_Production_Thermique_Renouvelable.html)
## Autres références {#sec-ref-autres}
* [DGE-DIREN - Conception cantonale de l’énergie (CoCEn 2019)](https://www.vd.ch/fileadmin/user_upload/themes/environnement/energie/fichiers_pdf/CoCEn_Pub_complete_20190816.pdf)
* [OFEN - Schweizerische Statistik der erneuerbaren Energien. Ausgabe 2022 (2023)](https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken/teilstatistiken.html)
# Glossaire {#sec-glossaire}
```{r}
# ---------------------------------------------------------
# Bloc pour lecture du file BRUT où se trouvent toutes les définition pour le glossaire et création du data.frame "definition" ----
# ---------------------------------------------------------
tryCatch(
expr = {readxl::read_excel("P:/DIREN/11 POLITIQUE ENERG/11.08 Indicateurs et stat/1 Indicateurs DIREN/3-Fiches IND MET OBJ/Liste Definitions.xlsx",
skip = 2) |>
janitor::clean_names(case="screaming_snake") |>
select(TERME, DEFINITION) |>
readr::write_csv2("./data/definitions.csv")
},
error = function(e) message("Attention: la table définition n'a pas pu être réactualisée avec les données brutes du P:/ ", e$message),
warning = function(w) message("Attention: la table définition n'a pas pu être réactualisée avec les données brutes du P:/ ", w$message)
)
```
```{r}
# ---------------------------------------------------------
# Bloc pour sélectionner les définitions à apparaître dans le glossaire ----
# ---------------------------------------------------------
# Lecture du file
def_tot <- readr::read_delim(file = "./data/definitions.csv",
delim = ";",
show_col_types = FALSE) |>
# Mettre les premières lettres de chaque définition en majuscule
dplyr::mutate(DEFINITION = stringr::str_replace(DEFINITION,"^\\p{L}",stringr::str_to_upper))
# Sélection des définitions
definitions <- def_tot |>
filter(TERME %in% c(
"Gigawattheure (GWh)"
))
# Print de la table avec modification des columns
definitions |>
gt_table_ind() |>
gt::cols_label(TERME = "", DEFINITION ="Définition") |>
gt::tab_options(table.align = "left")
```
# Annexes {#sec-annexes .unnumbered}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->