Code
t_recapAgent_val |>
group_by(date) |>
summarise(Nobs = n()) |>
arrange(desc(date)) |>
print_table_conditional()
Données - INSEE
Last observation: Q2 2026 (N = 374)
First observation: Q1 1949 (N = 355)
Last data update: 03 sept. 2026, 05:31
Last compile: 04 sept. 2026, 02:30
t_recapAgent_val |>
group_by(date) |>
summarise(Nobs = n()) |>
arrange(desc(date)) |>
print_table_conditional()t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(date %in% c(as.Date("2017-04-01"), max(date) - months(3), max(date))) |>
spread(date, value) |>
print_table_conditional()t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D41") |>
filter(date %in% c(as.Date("2017-04-01"), max(date) - months(3), max(date))) |>
spread(date, value) |>
print_table_conditional()| sheet | column | Compte | operation | Operation1 | Operation2 | 2017-04-01 | 2026-01-01 | 2026-04-01 |
|---|---|---|---|---|---|---|---|---|
| APU | 24 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 0.351 | 0.901 | 0.960 |
| APU | 28 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 10.253 | 18.191 | 18.916 |
| ISBLSM | 16 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 0.165 | 0.686 | 0.710 |
| ISBLSM | 18 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 0.046 | 0.161 | 0.174 |
| Menages | 42 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 3.142 | 12.723 | 12.751 |
| Menages | 46 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 3.148 | 11.311 | 11.368 |
| RdM | 10 | NA | D41 | En provenance du reste du monde | Intérêts | 13.625 | 43.385 | 44.218 |
| RdM | 31 | NA | D41 | à destination du reste du monde | Intérêts | 15.033 | 55.179 | 56.808 |
| SF | 17 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 37.052 | 115.827 | 119.533 |
| SF | 21 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 25.247 | 105.506 | 109.108 |
| SNF | 17 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 14.796 | 28.744 | 29.685 |
| SNF | 22 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 18.219 | 35.508 | 36.662 |
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D41") |>
filter(date %in% c(as.Date("2021-04-01"), max(date))) |>
spread(date, value) |>
print_table_conditional()| sheet | column | Compte | operation | Operation1 | Operation2 | 2021-04-01 | 2026-04-01 |
|---|---|---|---|---|---|---|---|
| APU | 24 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 0.142 | 0.960 |
| APU | 28 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 8.005 | 18.916 |
| ISBLSM | 16 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 0.128 | 0.710 |
| ISBLSM | 18 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 0.028 | 0.174 |
| Menages | 42 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 2.301 | 12.751 |
| Menages | 46 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 2.304 | 11.368 |
| RdM | 10 | NA | D41 | En provenance du reste du monde | Intérêts | 12.536 | 44.218 |
| RdM | 31 | NA | D41 | à destination du reste du monde | Intérêts | 11.023 | 56.808 |
| SF | 17 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 30.652 | 119.533 |
| SF | 21 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 20.789 | 109.108 |
| SNF | 17 | Compte d'affectation des revenus primaires | D41 | Reçu | Intérêts | 15.924 | 29.685 |
| SNF | 22 | Compte d'affectation des revenus primaires | D41 | Versé | Intérêts | 16.508 | 36.662 |
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42") |>
filter(date %in% c(as.Date("2017-04-01"), max(date) - months(3), max(date))) |>
spread(date, value) |>
print_table_conditional()| sheet | column | Compte | operation | Operation1 | Operation2 | 2017-04-01 | 2026-01-01 | 2026-04-01 |
|---|---|---|---|---|---|---|---|---|
| APU | 25 | Compte d'affectation des revenus primaires | D42 | Reçu | Dividendes | 1.860 | 2.047 | 3.121 |
| Menages | 43 | Compte d'affectation des revenus primaires | D42 | Reçu | Dividendes | 8.095 | 16.014 | 16.350 |
| RdM | 11 | NA | D42 | En provenance du reste du monde | Dividendes | 13.898 | 31.566 | 31.692 |
| RdM | 32 | NA | D42 | à destination du reste du monde | Dividendes | 11.212 | 19.756 | 19.613 |
| SF | 18 | Compte d'affectation des revenus primaires | D42 | Reçu | Dividendes | 12.135 | 24.818 | 25.464 |
| SF | 22 | Compte d'affectation des revenus primaires | D42 | Versé | Dividendes | 10.181 | 16.480 | 17.998 |
| SNF | 18 | Compte d'affectation des revenus primaires | D42 | Reçu | Dividendes | 37.503 | 60.989 | 61.308 |
| SNF | 23 | Compte d'affectation des revenus primaires | D42 | Versé | Dividendes | 46.726 | 75.578 | 76.166 |
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
filter(date %in% c(as.Date("2017-04-01"), max(date) - months(3), max(date))) |>
spread(date, value) |>
print_table_conditional()| sheet | column | Compte | operation | Operation1 | Operation2 | 2017-04-01 | 2026-01-01 | 2026-04-01 |
|---|---|---|---|---|---|---|---|---|
| APU | 64 | Compte de capital | B9NF | Besoin (-) ou Capacité (+) de financement | NA | -18.544 | -38.734 | -39.075 |
| ISBLSM | 35 | Compte de capital | B9NF | Besoin (-) ou Capacité (+) de financement | NA | 0.080 | -0.152 | -0.255 |
| Menages | 78 | Compte de capital | B9NF | Besoin (-) ou Capacité (+) de financement | NA | 14.447 | 43.064 | 40.418 |
| RdM | 50 | NA | B9NF | Besoin (-) ou Capacité(+) de financement de la Nation | NA | -2.990 | -5.634 | -4.849 |
| SF | 52 | Compte de capital | B9NF | Besoin (-) ou Capacité (+) de financement | NA | -1.562 | -4.714 | -5.813 |
| SNF | 46 | Compte de capital | B9NF | Besoin (-) ou Capacité (+) de financement | NA | 2.589 | -5.098 | -0.123 |
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
ggplot() + geom_line(aes(x = date, y = value, color = paste0(sheet, " - ", Operation1))) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-200, 100, 10),
labels = dollar_format(pre = "", su = " Md€")) +
theme(legend.position = c(0.4, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
transmute(date, value, gdp, sheet, value_gdp = value/gdp) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2000-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2000-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations Publiques` = `APU`, `Sociétés (SNF + SF)` = SNF + SF, `Ménages` = Menages) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2000-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2007-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")+
geom_hline(yintercept = 0, linetype ="dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2007-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations Publiques` = `APU`, `Sociétés (SNF + SF)` = SNF + SF, `Ménages` = Menages) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype ="dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2007-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2013-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("2013-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")+
geom_hline(yintercept = 0, linetype ="dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2013-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations Publiques` = `APU`, `Sociétés (SNF + SF)` = SNF + SF, `Ménages` = Menages) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")+
geom_hline(yintercept = 0, linetype ="dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2013-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("2017-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.84),
legend.title = element_blank(),
legend.direction = "horizontal")+
geom_hline(yintercept = 0, linetype ="dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations Publiques` = `APU`, `Sociétés (SNF + SF)` = SNF + SF, `Ménages` = Menages) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed")
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.7, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% group_by(sheet) %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
# --- Votre préparation de données inchangée -----------------------------------
df_long <- t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
transmute(date, value = value / gdp, sheet) |>
tidyr::pivot_wider(names_from = sheet, values_from = value) |>
transmute(
date,
`Administrations\npubliques` = APU,
`Sociétés\n(SNF + SF)` = SNF + SF,
`Ménages` = Menages,
`Reste du\nmonde` = RdM
) |>
tidyr::pivot_longer(-date, names_to = "sheet", values_to = "value") |>
arrange(sheet, date)
# --- Helpers dynamiques pour libellés -----------------------------------------
# Libellé "1er/2ème/3ème/4ème trimestre YYYY" en français
fr_trim_label <- function(d) {
q <- lubridate::quarter(d)
y <- lubridate::year(d)
ord <- c("1er", "2ème", "3ème", "4ème")[q]
paste0(ord, " trimestre ", y)
}
last_date <- max(df_long$date, na.rm = TRUE) # ex. 2025-04-01
last_label <- fr_trim_label(last_date) # "2ème trimestre 2025"
start_year <- lubridate::year(min(df_long$date, na.rm = TRUE))
# --- Points de départ/arrivée pour étiquettes --------------------------------
last_pts <- df_long |>
group_by(sheet) |>
slice_max(order_by = date, n = 1, with_ties = FALSE) |>
ungroup() |>
mutate(lbl = percent(value, accuracy = 0.01, style_positive = "plus"))
first_pts <- df_long |>
group_by(sheet) |>
slice_min(order_by = date, n = 1, with_ties = FALSE) |>
ungroup() |>
mutate(lbl = percent(value, accuracy = 0.01, style_positive = "plus"))
# --- Plot ---------------------------------------------------------------------
pal <- c(
"Administrations\npubliques" = "#E69F00",
"Sociétés\n(SNF + SF)" = "#56B4E9",
"Ménages" = "#009E73",
"Reste du\nmonde" = "#CC79A7"
)
ggplot(df_long, aes(date, value, color = sheet)) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_line(linewidth = 1.1, na.rm = TRUE) +
geom_label_repel(
data = last_pts,
aes(label = lbl),
size = 3.4, segment.size = 0.3,
label.padding = unit(0.15, "lines"),
label.r = unit(0.15, "lines"),
fill = "white", show.legend = FALSE
) +
geom_label_repel(
data = first_pts,
aes(label = lbl),
size = 3.4, segment.size = 0.3,
label.padding = unit(0.15, "lines"),
label.r = unit(0.15, "lines"),
fill = "white", show.legend = FALSE
) +
scale_color_manual(values = pal, NULL) +
scale_y_continuous(
breaks = 0.01 * seq(-100, 140, 2),
labels = function(x) percent(x, accuracy = 1, style_positive = "plus")
) +
scale_x_date(
date_breaks = "1 year",
date_labels = "%Y",
expand = expansion(mult = c(0, 0.06))
) +
labs(
x = NULL,
y = "Besoin (–) ou capacité (+) de financement\n% du PIB",
title = paste0(
"Capacité/Besoin de financement par secteur institutionnel"
),
subtitle = paste0("Depuis ", start_year, " (trimestriel)"),
caption = paste0("Sources: Insee, comptes nationaux du ", last_label, ".")
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold"),
legend.position = "top",
legend.justification = "left",
panel.grid.minor = element_blank(),
panel.grid.major.x = element_line(linewidth = 0.2),
panel.grid.major.y = element_line(linewidth = 0.2),
axis.title.y = element_text(margin = margin(r = 8))
)
# 1) Prep ----------------------------------------------------------------------
df_long <- t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2017-01-01")) |>
transmute(date, value = value, sheet) |>
tidyr::pivot_wider(names_from = sheet, values_from = value) |>
transmute(
date,
`Administrations\npubliques` = APU,
`Sociétés\n(SNF + SF)` = SNF + SF,
`Ménages` = Menages,
`Reste du\nmonde` = RdM
) |>
tidyr::pivot_longer(-date, names_to = "sheet", values_to = "value") |>
arrange(sheet, date)
# --- Helpers dynamiques pour libellés -----------------------------------------
# Libellé "1er/2ème/3ème/4ème trimestre YYYY" en français
fr_trim_label <- function(d) {
q <- lubridate::quarter(d)
y <- lubridate::year(d)
ord <- c("1er", "2ème", "3ème", "4ème")[q]
paste0(ord, " trimestre ", y)
}
last_date <- max(df_long$date, na.rm = TRUE) # ex. 2025-04-01
last_label <- fr_trim_label(last_date) # "2ème trimestre 2025"
start_year <- lubridate::year(min(df_long$date, na.rm = TRUE))
# Last obs per series for labels
last_pts <- df_long |>
group_by(sheet) |>
slice_max(order_by = date, n = 1, with_ties = FALSE) |>
ungroup() |>
mutate(lbl = paste0(round(value, 1), " Md€"))
# First obs per series for labels
first_pts <- df_long |>
group_by(sheet) |>
slice_min(order_by = date, n = 1, with_ties = FALSE) |>
ungroup() |>
mutate(lbl = paste0(round(value, 1), " Md€"))
# 2) Plot ----------------------------------------------------------------------
# Okabe–Ito palette (colorblind-friendly)
pal <- c(
"Administrations\npubliques" = "#E69F00",
"Sociétés\n(SNF + SF)" = "#56B4E9",
"Ménages" = "#009E73",
"Reste du\nmonde" = "#CC79A7"
)
ggplot(df_long, aes(date, value, color = sheet)) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_line(linewidth = 1.1, na.rm = TRUE) +
geom_label_repel(
data = last_pts,
aes(label = lbl),
size = 3.4,
segment.size = 0.3,
label.padding = unit(0.15, "lines"),
label.r = unit(0.15, "lines"),
fill = "white",
show.legend = FALSE
) +
geom_label_repel(
data = first_pts,
aes(label = lbl),
size = 3.4,
segment.size = 0.3,
label.padding = unit(0.15, "lines"),
label.r = unit(0.15, "lines"),
fill = "white",
show.legend = FALSE
) +
scale_color_manual(values = pal, NULL) +
scale_y_continuous(
breaks = seq(-100, 140, 10),
labels = dollar_format(pre = "", su = "Md€", acc = 0.1)
) +
scale_x_date(
date_breaks = "1 year",
date_labels = "%Y",
expand = expansion(mult = c(0, 0.06)) # space for labels on the right
) +
labs(
x = NULL,
y = "Besoin (–) ou capacité (+) de financement\nMilliards",
title = "Capacité/Besoin de financement par secteur institutionnel",
subtitle = paste0("Depuis ", year(min(df_long$date)), " (trimestriel)"),
caption = paste0("Sources: Insee, comptes nationaux du ", last_label)
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold"),
legend.position = "top",
legend.justification = "left",
panel.grid.minor = element_blank(),
panel.grid.major.x = element_line(linewidth = 0.2),
panel.grid.major.y = element_line(linewidth = 0.2),
axis.title.y = element_text(margin = margin(r = 8))
)
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2019-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Sociétés\n(SNF + SF)` = SNF + SF, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.65, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF") |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2019-01-01")) |>
transmute(date, value = value/gdp, sheet) |>
spread(sheet, value) |>
transmute(date, `Administrations\nPubliques` = `APU`, `Ménages` = Menages, `Reste du\nMonde` = RdM) |>
gather(sheet, value, -date) |>
arrange(desc(date)) |>
ggplot() + geom_line(aes(x = date, y = value, color = sheet)) +
xlab("") + ylab("Besoin (-) ou Capacité (+) de financement (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.65, 0.9),
legend.title = element_blank(),
legend.direction = "horizontal") +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label_repel(data = . %>% filter(date %in% c(max(date), min(date))),
aes(x = date, y = value, color = sheet, label = percent(value, acc = 0.1)))
library(dplyr)
library(ggplot2)
library(scales)
# optional
# install.packages("ggrepel")
# library(ggrepel)
# 1) Préparer les données une fois pour toutes
plot_df <- t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
mutate(
Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (balance courante)"),
value_gdp = value / gdp
) |>
select(date, value_gdp, Sheet) |>
arrange(date)
save(plot_df, file = "~/github/GraphOftheWeek_Relecture/relecture/data/data_2026_08.rds")
# 2) Dernières observations par série (pour étiquettes)
last_pts <- plot_df |>
group_by(Sheet) |>
filter(date == max(date, na.rm = TRUE)) |>
ungroup()
# 3) Palette simple et cohérente
pal <- c("Solde public" = "#1f77b4", "Solde extérieur (balance courante)" = "#ff7f0e")
# --- Helpers dynamiques pour libellés -----------------------------------------
# Libellé "1er/2ème/3ème/4ème trimestre YYYY" en français
fr_trim_label <- function(d) {
q <- lubridate::quarter(d)
y <- lubridate::year(d)
ord <- c("1er", "2ème", "3ème", "4ème")[q]
paste0(ord, " trimestre ", y)
}
last_date <- max(plot_df$date, na.rm = TRUE) # ex. 2025-04-01
last_label <- fr_trim_label(last_date) # "2ème trimestre 2025"
start_year <- lubridate::year(min(plot_df$date, na.rm = TRUE))
# 4) Le graphique
p <- ggplot(plot_df, aes(x = date, y = value_gdp, color = Sheet)) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_line(linewidth = 1.1) +
# points fin de série (pour que l’étiquette "accroche" un point)
geom_point(data = last_pts, size = 2.2) +
# ---- Choisir l'une des deux options d'étiquetage ----
# (A) Sans ggrepel (base)
geom_label(
data = last_pts,
aes(label = label_percent(accuracy = 0.1)(value_gdp)),
label.padding = unit(0.15, "lines"),
label.size = 0,
fill = "white",
label.r = unit(0.15, "lines"),
vjust = -0.8,
show.legend = FALSE
) +
scale_color_manual(values = pal, guide = guide_legend(title = NULL)) +
scale_y_continuous(
labels = label_percent(accuracy = 1),
breaks = seq(-0.5, 0.1, by = 0.01), # -10% à +10% (ajustez selon vos données)
expand = expansion(mult = c(0.02, 0.05))
) +
scale_x_date(
date_breaks = "5 years",
date_labels = "%Y",
expand = expansion(mult = c(0.01, 0.05))
) +
labs(
x = NULL,
y = "% du PIB",
title = "Solde public et solde extérieur (% du PIB)",
subtitle = paste0("Comptes trimestriels du ", last_label),
caption = paste0("Source : Insee, comptes du ", last_label)
) +
theme_minimal(base_size = 12) +
theme(
legend.position = c(0.25, 0.25), # ou 'none' si vous préférez sans légende
panel.grid.minor = element_blank(),
plot.title = element_text(face = "bold"),
plot.caption = element_text(color = "gray40")
)
p
save(plot_df, file = "~/github/GraphOftheWeek_Relecture/relecture/data/data_2026_08.rda")t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
arrange(desc(date)) |>
mutate(Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (Balance courante)"),
value_gdp = value/gdp) |>
filter(date >= as.Date("1970-01-01")) |>
select(date, value_gdp, Sheet, value, gdp) |>
ggplot() + geom_line(aes(x = date, y = value_gdp, color = Sheet)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.3),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label(data = . %>% group_by(Sheet) %>% filter(date == max(date)), aes(x = date, y = value_gdp, color = Sheet, label = percent(value_gdp)))
10 août 1957 (franc Gaillard)7 : dévaluation « déguisée » de 20 % par le président du Conseil Félix Gaillard, laquelle fut légalisée en juin 1958.
En juin 1958, Charles de Gaulle valide une dévaluation de 20 %. Elle est considérée comme une réussite.
En 1958 la France se trouvait dans une situation particulièrement difficile, malgré l’ ” opération 20 % ” réalisée par M. Félix Gaillard durant l’été 1957 (dévaluation déguisée ayant pris la forme d’une prime aux exportations et d’une taxation de la plupart des importations), malgré aussi l’” opération vérité des prix ” qui tendait à réduire la consommation intérieure en augmentant les tarifs publics pour freiner l’inflation.
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("1952-01-01"),
date <= as.Date("1964-01-01")) |>
mutate(Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (Balance courante)")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Sheet)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.73, 0.2),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label(data = . %>% filter(date %in% c(as.Date("1960-01-01"), as.Date("1957-01-01"))), aes(x = date, y = value/gdp, color = Sheet, label = percent(value/gdp)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("1970-01-01"),
date <= as.Date("1980-01-01")) |>
mutate(Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (Balance courante)")) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Sheet)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.3),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label(data = . %>% filter(date %in% c(max(date), as.Date("1976-07-01"))), aes(x = date, y = value/gdp, color = Sheet, label = percent(value/gdp)))
plot_df <- t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
group_by(sheet) |>
mutate(value = rollsum(value, 4, fill = NA, align = "right"),
gdp = rollsum(gdp, 4, fill = NA, align = "right")) |>
arrange(desc(date)) |>
mutate(Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (balance courante)"),
value_gdp = value/gdp) |>
select(date, value_gdp, Sheet) |>
ungroup() |>
add_row(date = as.Date("2025-10-01"),
value_gdp = -0.054,
Sheet = "Solde public",
sheet = "APU") |>
arrange(desc(date),sheet)
save(plot_df, file = "~/github/GraphOftheWeek_Relecture/relecture/data/data_2026_08.rda")
plot_df |>
ggplot() + geom_line(aes(x = date, y = value_gdp, color = Sheet)) +
xlab("") + ylab("Capacité de financement, APU ou RdM\n% du PIB, sur 12 mois") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.3),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label(data = . %>% group_by(Sheet) %>% filter(date == max(date)), aes(x = date, y = value_gdp, color = Sheet, label = percent(value_gdp)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "B9NF",
sheet %in% c("RdM", "APU")) |>
left_join(gdp_quarterly, by = "date") |>
group_by(sheet) |>
mutate(value = rollsum(value, 4, fill = NA, align = "right"),
gdp = rollsum(gdp, 4, fill = NA, align = "right")) |>
arrange(desc(date)) |>
mutate(Sheet = ifelse(sheet == "APU", "Solde public", "Solde extérieur (Balance courante)"),
value_gdp = value/gdp) |>
select(date, value_gdp, Sheet, value, gdp) |>
filter(date >= as.Date("1990-01-01")) |>
ggplot() + geom_line(aes(x = date, y = value_gdp, color = Sheet)) +
xlab("") + ylab("Capacité de financement, APU ou RdM\n% du PIB, sur 12 mois") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-100, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.15),
legend.title = element_blank()) +
geom_hline(yintercept = 0, linetype = "dashed") +
geom_label(data = . %>% group_by(Sheet) %>% filter(date == max(date)), aes(x = date, y = value_gdp, color = Sheet, label = percent(value_gdp)))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42") |>
ggplot() + geom_line(aes(x = date, y = value, color = paste0(sheet, " - ", Operation1))) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10, 100, 10),
labels = dollar_format(pre = "", su = " Md€")) +
theme(legend.position = c(0.3, 0.7),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42") |>
left_join(gdp_quarterly, by = "date") |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = paste0(sheet, " - ", Operation1))) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.2, 0.7),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42") |>
transmute(date, value, Variable = paste0(sheet, " - ", Operation1)) |>
spread(Variable, value) |>
transmute(date,
`Administrations Publiques: Reçu` = `APU - Reçu`,
`Ménages: Reçu` = `Menages - Reçu`,
`Reste du Monde: En provenance - à destination` = `RdM - En provenance du reste du monde` - `RdM - à destination du reste du monde`,
`Sociétés Financières: Reçu - Versé` = `SF - Reçu` - `SF - Versé`,
`Sociétés Non Financières: Reçu - Versé` = `SNF - Reçu` - `SNF - Versé`) |>
gather(Variable, value, -date) |>
left_join(gdp_quarterly, by = "date") |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Variable)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, .5),
labels = percent_format(acc = .1)) +
theme(legend.position = c(0.5, 0.88),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("D42", "D44"),
sheet == "Menages") |>
left_join(gdp_quarterly, by = "date") |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Operation2)) +
xlab("") + ylab("Dividendes reçus, Ménages (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.1),
labels = percent_format(acc = 0.1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("D42", "D44"),
sheet == "Menages") |>
ggplot() + geom_line(aes(x = date, y = value, color = Operation2)) +
xlab("") + ylab("Dividendes reçus, Ménages") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 1000, 2)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("D42", "D44", "B6", "D11"),
sheet == "Menages") |>
filter(date >= as.Date("1999-01-01")) |>
group_by(Operation2) |>
arrange(date) |>
mutate(value = 100*value/value[1]) |>
ggplot() + geom_line(aes(x = date, y = value, color = paste0(Operation1, Operation2))) +
xlab("") + ylab("Dividendes reçus, Ménages") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 1000, 100)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("D51", "D611", "D613"),
sheet == "Menages") |>
filter(date >= as.Date("1999-01-01")) |>
group_by(Operation2) |>
arrange(date) |>
mutate(value = 100*value/value[1]) |>
ggplot() + geom_line(aes(x = date, y = value, color = paste0(Operation1, Operation2))) +
xlab("") + ylab("Dividendes reçus, Ménages") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 1000, 10)) +
theme(legend.position = c(0.3, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B2 (y compris B3)"),
sheet == "Menages") |>
filter(date >= as.Date("1999-01-01")) |>
group_by(Operation2) |>
arrange(date) |>
mutate(value_index = 100*value/value[1]) |>
ggplot() + geom_line(aes(x = date, y = value_index, color = paste0(Operation2))) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 1000, 10)) +
theme(legend.position = c(0.3, 0.8),
legend.title = element_blank()) +
geom_label_repel(data = . %>% filter(date == max(date) | date == min(date)),
aes(x = date, y = value_index, label = round(value), color = Operation2))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B2 (y compris B3)"),
sheet == "Menages") |>
filter(date >= as.Date("2017-01-01")) |>
group_by(Operation2) |>
arrange(date) |>
mutate(value_index = 100*value/value[1]) |>
ggplot() + geom_line(aes(x = date, y = value_index, color = Operation2)) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 1000, 5)) +
theme(legend.position = c(0.3, 0.8),
legend.title = element_blank()) +
geom_label_repel(data = . %>% filter(date == max(date) | date == min(date)),
aes(x = date, y = value_index, label = round(value), color = Operation2))
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42",
sheet == "Menages") |>
ggplot() + geom_line(aes(x = date, y = value, color = paste0(sheet, " - ", Operation1))) +
xlab("") + ylab("") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(-10, 100, 2),
labels = dollar_format(pre = "", su = " Md€")) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation == "D42",
sheet == "Menages") |>
left_join(gdp_quarterly, by = "date") |>
ggplot() + geom_line(aes(x = date, y = value/gdp)) +
xlab("") + ylab("Dividendes reçus, Ménages (% du PIB)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.1),
labels = percent_format(acc = 0.1)) +
theme(legend.position = c(0.2, 0.8),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B6", "B7"),
sheet == "Menages") |>
arrange(date) |>
left_join(gdp_quarterly, by = "date") |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Operation1)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B8", "B9NF", "B6", "P51"),
sheet == "Menages") |>
select(date, value, operation) |>
arrange(date) |>
unique() |>
spread(operation, value) |>
transmute(date,
`Epargne brute des ménages B8/B6` = B8/B6,
`Besoin (-) ou Capacité (+) de financement B9NF/B6` = B9NF/B6,
`Formation brute de capital fixe P51/B6` = P51/B6) |>
gather(variable, value, -date) |>
ggplot() + geom_line(aes(x = date, y = value, color = variable)) +
xlab("") + ylab("% du revenu disponible brut (B6)") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B8", "B9NF", "P51"),
sheet == "Menages") |>
arrange(date) |>
left_join(gdp_quarterly, by = "date") |>
mutate(Variable = ifelse(operation %in% c("B8", "B9NF"),
Operation1, Operation2)) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Variable)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "5 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B8", "B9NF", "P51"),
sheet == "Menages") |>
arrange(date) |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2006-01-01")) |>
mutate(Variable = ifelse(operation %in% c("B8", "B9NF"),
Operation1, Operation2)) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Variable)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "2 years"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank())
t_recapAgent_val |>
left_join(variable, by = c("sheet", "column")) |>
filter(operation %in% c("B8", "B9NF", "P51"),
sheet == "Menages") |>
arrange(date) |>
left_join(gdp_quarterly, by = "date") |>
filter(date >= as.Date("2015-01-01")) |>
mutate(Variable = ifelse(operation %in% c("B8", "B9NF"),
Operation1, Operation2)) |>
ggplot() + geom_line(aes(x = date, y = value/gdp, color = Variable)) +
xlab("") + ylab("% du PIB") + theme_minimal() +
scale_x_date(breaks = seq.Date(from = as.Date("1900-01-01"), to = as.Date("2100-10-01"), by = "1 year"),
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(-10, 100, 2),
labels = percent_format(acc = 1)) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank())