Gross domestic product (GDP) at current market prices by NUTS 3 regions - nama_10r_3gdp

Data - Eurostat

Info

Last observation: Annual: 2024 (N = 6,706)

First observation: Annual: 2000 (N = 11,556)

Last data update: 23 jul 2026, 22:37. Last compile: 24 jul 2026, 02:53

Structure

Table - Per Inhabitant

Code
nama_10r_3gdp %>%
  filter(time == "2017",
         unit %in% c("EUR_HAB", "PPS_EU27_2020_HAB")) %>%
  select(geo, unit, values) %>%
  
  spread(unit, values) %>%
  arrange(-`EUR_HAB`) %>%
  print_table_conditional()

NUTS 0

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 2,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS0, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

NUTS 1

EUR_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 3,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS1, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

PPS_EU27_2020_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 3,
         unit == "PPS_EU27_2020_HAB") %>%
  right_join(europe_NUTS1, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 10),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

NUTS 2

EUR_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 4,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 20),
                       values = c(0, 0.05, 0.1, 0.15, 0.2, 0.25, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

PPS_EU27_2020_HAB

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 4,
         unit == "PPS_EU27_2020_HAB") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 200, 20),
                       values = c(0, 0.05, 0.1, 0.15, 0.2, 0.25, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

NUTS 3

2016

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(0, 600, 50),
                       values = c(0, 0.02, 0.04, 0.06, 0.08, 0.1, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")

2019

Code
nama_10r_3gdp %>%
  filter(time == "2019", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(10, 250, 30),
                       values = c(0, 0.1, 0.15, 0.2, 0.25, 0.3,0.35, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "PIB / habitant, 2019\n(milliers €)\n")

2018

Code
nama_10r_3gdp %>%
  filter(time == "2018", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = seq(10, 250, 30),
                       values = c(0, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "PIB / habitant\n(milliers €)\n")

NUTS 3 - Log

Code
nama_10r_3gdp %>%
  filter(time == "2016", 
         nchar(geo) == 5,
         unit == "EUR_HAB") %>%
  right_join(europe_NUTS3, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/1000)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = "", suffix = " k€"),
                       breaks = c(1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 300, 1000),
                       trans = scales::pseudo_log_trans(sigma = 0.001)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "€ / inhabitant")