House sales index of value of transactions (2015=100) - annual data - prc_hpi_hsvq

Data - Eurostat

Structure

France: New vs. Existing Dwellings

Code
prc_hpi_hsvq |>
  filter(geo == "FR",
         unit == "I25_Q",
         purchase %in% c("DW_NEW", "DW_EXST")) |>
  quarter_to_date() |>

  ggplot() + geom_line(aes(x = date, y = values, color = Purchase)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("House sales index (2025=100)")

Annual Rate of Change: France, Spain, Netherlands

Code
prc_hpi_hsvq |>
  filter(geo %in% c("FR", "ES", "NL"),
         unit == "RCH_A",
         purchase == "TOTAL") |>
  quarter_to_date() |>

  add_flag_color("Geo") |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("House sales index, annual rate of change") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Latest Quarter by Country

Code
latest_q <- prc_hpi_hsvq |>
  filter(unit == "I25_Q",
         purchase == "TOTAL",
         !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

prc_hpi_hsvq |>
  filter(unit == "I25_Q",
         purchase == "TOTAL",
         time == latest_q) |>
  mutate(values = round(values, 1)) |>
  select(Geo, values) |>
  arrange(-values) |>
  print_table_conditional()
Geo values
Austria 150.5
Hungary 131.5
Cyprus 123.7
Malta 122.8
Lithuania 116.7
Slovenia 112.3
Spain 105.2
Bulgaria 104.2
Portugal 103.6
Denmark 101.4
Netherlands 99.3
France 96.7
Norway 94.5
Luxembourg 89.7
Belgium 88.3
Finland 86.6
Ireland 83.7
Croatia 83.0

Purchase Total

France, Spain, Austria

Code
prc_hpi_hsvq |>
  filter(geo %in% c("FR", "ES", "AT"),
         unit == "I25_Q",
         purchase == "TOTAL") |>
  quarter_to_date() |>
  
  add_flag_color("Geo") |>
  ggplot() + geom_line() + theme_minimal() +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")

Belgium, Denmark, Finland

Code
prc_hpi_hsvq |>
  filter(geo %in% c("BE", "DK", "FI"),
         unit == "I25_Q",
         purchase == "TOTAL") |>
  quarter_to_date() |>
  
  add_flag_color("Geo") |>
  ggplot() + geom_line() + theme_minimal() +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.1, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")