Code
`econ-gen-dette-trim-adm-pub-2` %>%
group_by(variable) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
if (is_html_output()) print_table(.) else .} {
variable | Nobs |
---|---|
dette | 119 |
dette_PIB | 119 |
Data - INSEE
`econ-gen-dette-trim-adm-pub-2` %>%
group_by(variable) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
if (is_html_output()) print_table(.) else .} {
variable | Nobs |
---|---|
dette | 119 |
dette_PIB | 119 |
`econ-gen-dette-trim-adm-pub-2` %>%
group_by(date) %>%
summarise(Nobs = n()) %>%
arrange(desc(date)) %>%
if (is_html_output()) datatable(., filter = 'top', rownames = F) else .} {
<- gfd_france %>%
df_dette mutate(source = "Global Financial Data") %>%
bind_rows(insee_A_france %>%
mutate(source = "Insee, Annuelles")) %>%
bind_rows(insee_Q_france %>%
mutate(source = "Insee, Trimestrielles")) %>%
bind_rows(imf_france %>%
mutate(source = "FMI")) %>%
mutate(dette_anneePIB = dette_PIB / 100) %>%
arrange(date)
# --- Palette sobre & daltonisme-friendly (Okabe–Ito) --------------------------
<- c(
pal "FMI" = "#0072B2",
"Insee, Trimestrielles"= "#E69F00",
"Insee, Annuelles" = "#009E73",
"Global Financial Data" = "#D55E00"
)
# --- Déduire la fréquence pour styliser différemment annuel vs trimestriel ----
<- df_dette %>%
df_plot mutate(freq = case_when(
month(date) %in% c(3, 6, 9) ~ "Trimestriel",
month(date) == 12 ~ "Annuel",
TRUE ~ "Autre"
%>%
)) mutate(
source = factor(source, levels = names(pal)),
freq = factor(freq, levels = c("Trimestriel", "Annuel", "Autre"))
)
<- ggplot(df_plot, aes(x = date, y = dette_PIB, color = source)) +
p geom_line(aes(linetype = freq), linewidth = 0.9, na.rm = TRUE) +
geom_point(aes(shape = freq), size = 1.6, alpha = 0.8, na.rm = TRUE) +
scale_color_manual(
values = pal,
guide = guide_legend(
title = "Source",
nrow = 1,
order = 1
)+
) scale_linetype_manual(
values = c("Trimestriel" = "solid", "Annuel" = "dashed", "Autre" = "dotdash"),
guide = guide_legend(
title = "Fréquence",
nrow = 1,
order = 2
)+
) scale_shape_manual(
values = c("Trimestriel" = 16, "Annuel" = 17, "Autre" = 15),
guide = guide_legend(
title = "Fréquence",
nrow = 1,
order = 2
)+
) scale_x_date(
breaks = seq(as.Date("1800-01-01"), as.Date("2030-01-01"), by = "20 years"),
labels = scales::date_format("%Y"),
expand = expansion(mult = c(0.01, 0.02))
+
) scale_y_continuous(
name = "Dette publique (% du PIB)",
breaks = scales::pretty_breaks(n = 8)
+
) labs(
title = "Dette publique / PIB (1851–)",
caption = "Sources : FMI, Insee (trimestriel et annuel), Global Financial Data."
+
) theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold"),
legend.position = "bottom",
legend.box = "vertical", # ← empile les deux lignes
legend.title = element_text(face = "bold"),
legend.text = element_text(size = 11),
panel.grid.minor = element_blank(),
axis.title.x = element_blank()
)
+ scale_y_continuous(
p name = "Dette publique (années de PIB)",
labels = function(x) sprintf("%.2f", x/100),
breaks = pretty_breaks(n = 8)
)
<- `econ-gen-dette-trim-adm-pub-2` %>%
df_dette filter(variable == "dette_PIB") %>%
rename(dette_PIB = value) %>%
select(-variable) %>%
mutate(dette_anneePIB = dette_PIB / 100) %>%
arrange(date)
# --- Graphique ---
%>%
df_dette ggplot(aes(x = date, y = dette_anneePIB)) +
geom_line(color = "#00205B", linewidth = 1.1) +
geom_area(fill = "#00205B", alpha = 0.1) +
geom_point(
data = df_dette %>% slice_tail(n = 1),
color = "#00205B", size = 2
+
) geom_text(
data = df_dette %>% slice_tail(n = 1),
aes(label = paste0(round(dette_anneePIB, 2), " année de PIB")),
hjust = 0.5, vjust = -0.5, color = "#00205B", size = 3.8
+
) scale_x_date(
breaks = seq(as.Date("1995-01-01"), as.Date("2025-12-31"), by = "2 years"),
labels = date_format("%Y"),
expand = expansion(mult = c(0.01, 0.12))
+
) scale_y_continuous(
name = "Dette publique (en années de PIB)",
breaks = seq(0.4, 1.2, 0.1),
labels = function(x) sprintf("%.1f", x)
+
) labs(
title = "Dette publique française depuis 1995",
subtitle = "Exprimée en années de PIB (et non en % du PIB)",
caption = "Source : Insee"
+
) theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
panel.grid.minor = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_text(angle = 0, size = 10),
plot.caption = element_text(size = 9, color = "gray40", hjust = 0)
)
<- `econ-gen-dette-trim-adm-pub-2` %>%
df_dette filter(variable == "dette_PIB") %>%
rename(dette_PIB = value) %>%
mutate(dette_anneePIB = dette_PIB / 100) %>%
arrange(date)
# --- Graphique ---
%>%
df_dette ggplot(aes(x = date, y = dette_anneePIB)) +
geom_line(color = "#00205B", linewidth = 1.1) +
geom_area(fill = "#00205B", alpha = 0.1) +
geom_point(
data = df_dette %>% slice_tail(n = 1),
color = "#00205B", size = 2
+
) geom_text(
data = df_dette %>% slice_tail(n = 1),
aes(label = paste0(round(dette_anneePIB, 2), " année de PIB")),
hjust = 0.5, vjust = -0.5, color = "#00205B", size = 3.8
+
) scale_x_date(
breaks = seq(as.Date("1995-01-01"), as.Date("2025-12-31"), by = "2 years"),
labels = date_format("%Y"),
expand = expansion(mult = c(0.01, 0.12))
+
) scale_y_continuous(
name = "Dette publique (en années de PIB)",
breaks = seq(0, 1.2, 0.2),
labels = function(x) sprintf("%.1f", x)
+
) labs(
title = "Dette publique française depuis 1995",
subtitle = "Exprimée en années de PIB (et non en % du PIB)",
caption = "Source : Insee"
+
) theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 15),
panel.grid.minor = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_text(angle = 0, size = 10),
plot.caption = element_text(size = 9, color = "gray40", hjust = 0)
)