Gross capital formation by industry (up to NACE A*64)

Data - Eurostat

Info

source dataset .html .RData
eurostat nama_10_a64_p5 2025-01-05 2025-01-07
eurostat nama_10_gdp 2025-01-07 2025-01-07

Data on inflation

source dataset .html .RData
bis CPI 2024-12-29 2022-01-20
ecb CES 2025-01-07 2025-01-07
eurostat nama_10_co3_p3 2025-01-05 2024-12-14
eurostat prc_hicp_cow 2025-01-05 2024-10-08
eurostat prc_hicp_ctrb 2025-01-05 2024-10-08
eurostat prc_hicp_inw 2025-01-05 2025-01-07
eurostat prc_hicp_manr 2025-01-07 2025-01-07
eurostat prc_hicp_midx 2024-11-01 2025-01-07
eurostat prc_hicp_mmor 2025-01-05 2025-01-07
eurostat prc_ppp_ind 2025-01-05 2024-10-08
eurostat sts_inpp_m 2024-06-24 2025-01-07
eurostat sts_inppd_m 2025-01-07 2025-01-07
eurostat sts_inppnd_m 2024-06-24 2025-01-07
fred cpi 2025-01-07 2025-01-07
fred inflation 2025-01-07 2025-01-07
imf CPI 2024-06-20 2020-03-13
oecd MEI_PRICES_PPI 2024-09-15 2024-04-15
oecd PPP2017 2024-04-16 2023-07-25
oecd PRICES_CPI 2024-04-16 2024-04-15
wdi FP.CPI.TOTL.ZG 2023-01-15 2024-09-18
wdi NY.GDP.DEFL.KD.ZG 2024-09-18 2024-09-18

LAST_COMPILE

LAST_COMPILE
2025-01-07

Last

Code
nama_10_a64_p5 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2023 328115

nace_r2

Code
nama_10_a64_p5 %>%
  left_join(nace_r2, by = "nace_r2") %>%
  group_by(nace_r2, Nace_r2) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

na_item

Code
nama_10_a64_p5 %>%
  left_join(na_item, by = "na_item") %>%
  group_by(na_item, Na_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
na_item Na_item Nobs
P51G Gross fixed capital formation 14999674
P5G Gross capital formation 542987
P52 Changes in inventories 167530
P52_P53 Changes in inventories and acquisitions less disposals of valuables 106085
P53 Acquisitions less disposals of valuables 77443

asset10

Code
nama_10_a64_p5 %>%
  left_join(asset10, by = "asset10") %>%
  group_by(asset10, Asset10) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
asset10 Asset10 Nobs
N11G Total fixed assets (gross) 1499445
N11MG Machinery and equipment and weapons systems (gross) 1396013
N112G Other buildings and structures (gross) 1374447
N117G Intellectual property products (gross) 1372385
N1131G Transport equipment (gross) 1366596
N11KG Total Construction (gross) 1210508
N11OG Other machinery and equipment and weapons systems (gross) 1097389
N1132G ICT equipment (gross) 1036303
N1173G Computer software and databases (gross) 914611
N1171G Research and development (gross) 800872
N111G Dwellings (gross) 788251
N11321G Computer hardware (gross) 751559
N115G Cultivated biological resources (gross) 699074
N11322G Telecommunications equipment (gross) 692221
N1G Produced non-financial assets (gross) 542987
N12G Inventories (gross) 167530
N1MG Inventories and acquisitions less disposals of valuables (gross) 106085
N13G Valuables (gross) 77443

unit

Code
nama_10_a64_p5 %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

time

Code
nama_10_a64_p5 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

geo

Code
nama_10_a64_p5 %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France, Italy, Germany

C - Manufacturing

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "IT", "DE"),
         nace_r2 == "C",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_3flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

B-E - Energy

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "IT", "DE"),
         nace_r2 == "B-E",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_3flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

France, Italy, United Kingdom, Spain, Germany

TOTAL investment

N11G - Total

Table

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         asset10 == "N11G",
         time == "2021") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  left_join(nace_r2, by = "nace_r2") %>%
  mutate(values = 100*values/gdp) %>%
  select_if(~ n_distinct(.) > 1) %>%
  select(-geo, -gdp) %>%
  spread(Geo, values) %>%
  arrange(-France) %>%
  print_table_conditional()

TOTAL - All sectors

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "TOTAL",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                     labels = scales::percent_format(accuracy = 1))

J - Information - communication

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "J",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("J - Information - communication\n% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

C - Manufacturing

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "C",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

M - Professional, scientific and technical activities

All
Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "M",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("M - Professional, scientific and technical activities\n% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

N117G
Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "M",
         asset10 == "N117G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("M - Professional, scientific and technical activities\n% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

O - Public administration and defence; compulsory social security

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "O",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

B-E - Industry

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "B-E",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

F - Construction

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "CH", "DE"),
         nace_r2 == "F",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_4flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

C20 - Chemicals

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "C20",
         asset10 == "N11G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_3flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .1),
                     labels = scales::percent_format(accuracy = .1))

N117G - Intellectual property products (gross)

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "TOTAL",
         asset10 == "N117G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                     labels = scales::percent_format(accuracy = 1))

N1132G - ICT equipment (gross)

Code
nama_10_a64_p5 %>%
  filter(unit == "CP_MEUR",
         geo %in% c("FR", "NL", "IT", "ES", "DE"),
         nace_r2 == "TOTAL",
         asset10 == "N1132G") %>%
  left_join(nama_10_gdp %>%
              filter(na_item == "B1GQ",
                     unit == "CP_MEUR") %>%
              select(geo, time, gdp = values), 
            by = c("geo", "time")) %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/gdp) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("% of GDP") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 200, .2),
                     labels = scales::percent_format(accuracy = .1))

Investissement en France

Long

Code
nama_10_a64_p5 %>%
  filter(geo == "FR",
         na_item == "P51G",
         unit == "CP_MEUR",
         time == "2018") %>%
  left_join(asset10, by = "asset10") %>%
  left_join(nace_r2, by = "nace_r2") %>%
  select(nace_r2, Nace_r2, asset10, Asset10, values) %>%
  arrange(-values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Large

Code
nama_10_a64_p5 %>%
  filter(geo == "FR",
         na_item == "P51G",
         unit == "CP_MEUR",
         time == "2018") %>%
  left_join(nace_r2, by = "nace_r2") %>%
  select(nace_r2, Nace_r2, asset10, values) %>%
  spread(asset10, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France, Germany, Italy, Netherlands, Spain

N11G - All

Code
nama_10_a64_p5 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         nace_r2 == "TOTAL",
         asset10 == "N11G") %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))

N1132G - ICT equipment (gross)

Code
nama_10_a64_p5 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         nace_r2 == "TOTAL",
         asset10 == "N1132G") %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))

Information -communication

Code
nama_10_a64_p5 %>%
  filter(unit == "PD15_EUR",
         geo %in% c("FR", "NL", "IT", "DE", "ES"),
         nace_r2 == "J",
         asset10 == "N11G") %>%
  left_join(geo, by = "geo") %>%
  year_to_date %>%
  filter(date >= as.Date("1995-01-01")) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  group_by(Geo) %>%
  mutate(values = 100*values/values[date == as.Date("1995-01-01")]) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal()  + add_5flags +
  scale_color_identity() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2022, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 10))