Construction - monthly data - index (2015 = 100) (NACE Rev. 2) - ei_isbu_m
Data - Eurostat
Info
Last observation: Monthly: 2026M06 (N = 13)
First observation: Monthly: 1980M01 (N = 4)
Last data update: 23 jul 2026, 22:08. Last compile: 24 jul 2026, 01:24
Structure
Covid Crisis (January-September 2020)
France, Germany, Italy, Europe
Code
ei_isbu_m %>%
filter(nace_r2 == "F",
indic == "IS-IP",
geo %in% c("FR", "DE", "IT", "EU27_2020"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(values = 100*values/values[time == "1997M01"]) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
month_to_date %>%
filter(date >= as.Date("2020-01-01"),
date <= as.Date("2020-09-01")) %>%
ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#003399", "#ED2939", "#000000", "#008c45")) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
geom_image(data = tibble(date = rep(as.Date("2020-04-01"), 4),
value = c(37, 102, 27, 82),
image = c("../../icon/flag/vsmall/france.png",
"../../icon/flag/vsmall/germany.png",
"../../icon/flag/vsmall/italy.png",
"../../icon/flag/vsmall/europe.png")),
aes(x = date, y = value, image = image), asp = 1.5) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))
Covid Crisis (January 2020 - May 2021)
France, Germany, Italy, Europe
Code
ei_isbu_m %>%
filter(nace_r2 == "F",
indic == "IS-IP",
geo %in% c("FR", "DE", "IT", "EU27_2020"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(values = 100*values/values[time == "1997M01"]) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo),
Geo = ifelse(geo == "EU27_2020", "Europe", Geo)) %>%
month_to_date %>%
filter(date >= as.Date("2020-01-01")) %>%
ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#003399", "#ED2939", "#000000", "#008c45")) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
geom_image(data = tibble(date = rep(as.Date("2020-04-01"), 4),
value = c(37, 102, 27, 82),
image = c("../../icon/flag/vsmall/france.png",
"../../icon/flag/vsmall/germany.png",
"../../icon/flag/vsmall/italy.png",
"../../icon/flag/vsmall/europe.png")),
aes(x = date, y = value, image = image), asp = 1.5) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))
France, Germany, Italy
All
Code
ei_isbu_m %>%
filter(nace_r2 == "F",
indic == "IS-IP",
geo %in% c("FR", "DE", "IT"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(values = 100*values/values[time == "1997M01"]) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
month_to_date %>%
ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
geom_image(data = tibble(date = rep(as.Date("2022-01-01"), 3),
value = c(110, 140, 85),
image = c("../../icon/flag/vsmall/france.png",
"../../icon/flag/vsmall/germany.png",
"../../icon/flag/vsmall/italy.png")),
aes(x = date, y = value, image = image), asp = 1.5) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))
1990-2020
Code
ei_isbu_m %>%
filter(nace_r2 == "F",
indic == "IS-IP",
geo %in% c("FR", "DE", "IT"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(values = 100*values/values[time == "1997M01"]) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
month_to_date %>%
ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
geom_image(data = tibble(date = rep(as.Date("2022-01-01"), 3),
value = c(116, 109, 100),
image = c("../../icon/flag/vsmall/france.png",
"../../icon/flag/vsmall/germany.png",
"../../icon/flag/vsmall/italy.png")),
aes(x = date, y = value, image = image), asp = 1.5) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))
2010-2020
Code
ei_isbu_m %>%
filter(nace_r2 == "F",
indic == "IS-IP",
geo %in% c("FR", "DE", "IT"),
s_adj == "SCA") %>%
select(geo, Geo, time, values) %>%
group_by(geo) %>%
mutate(values = 100*values/values[time == "1997M01"]) %>%
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
month_to_date %>%
filter(date >= as.Date("2010-01-01")) %>%
ggplot() + ylab("Construction Production") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = values, color = Geo)) +
scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
geom_image(data = tibble(date = rep(as.Date("2022-01-01"), 3),
value = c(116, 109, 100),
image = c("../../icon/flag/vsmall/france.png",
"../../icon/flag/vsmall/germany.png",
"../../icon/flag/vsmall/italy.png")),
aes(x = date, y = value, image = image), asp = 1.5) +
theme(legend.position = "none") +
scale_y_log10(breaks = seq(-60, 300, 10))