Harmonised index of consumer prices - monthly data

Data - Eurostat

Info

Last observation: Monthly: 2026M07 (N = 675)

First observation: Monthly: 1996M01 (N = 532)

Last data update: 11 aoû 2026, 22:31. Last compile: 11 aoû 2026, 23:39

Structure

Prices

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic == "TOTAL",
         geo %in% c("FR", "DE", "ES")) |>
  month_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags + 
  theme_minimal() + xlab("") + ylab("Consumer Price Index, All items") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Housing

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic == "CP-HI04",
         geo %in% c("FR", "DE", "ES")) |>
  month_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags + 
  theme_minimal() + xlab("") + ylab("Housing") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Countries

France

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("FR")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Germany

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("DE")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Spain

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("ES")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Greece

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("EL")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Portugal

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("PT")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Poland

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("PL")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Italy

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("IT")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Netherlands

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("NL")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())

Austria

Code
ei_cphi_m |>
  filter(unit == "HICP2025",
         indic %in% c("CP-HI04", "TOTAL", "CP-HIG", "CP-HIS"),
         geo %in% c("AT")) |>
  month_to_date() |>
  
  ggplot() + geom_line(aes(x = date, y = values, color = Indic)) + 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 200, 10)) +
  
  theme(legend.position = c(0.7, 0.30),
        legend.title = element_blank())