Data Visualisation

Time Series Plots

library(nomisdata)
library(ggplot2)
library(dplyr)

# Fetch unemployment data over time
unemployment <- fetch_nomis(
  "NM_1_1",
  date = paste0("2020", c("01", "02", "03", "04", "05", "06")),
  geography = "2092957697",  # UK
  measures = 20201,           # Rate
  sex = 7
)

# Plot
unemployment |>
  mutate(DATE = as.Date(paste0(DATE, "-01"))) |>
  ggplot(aes(x = DATE, y = OBS_VALUE)) +
  geom_line(linewidth = 1, colour = "#0066cc") +
  geom_point(size = 2, colour = "#0066cc") +
  labs(
    title = "UK Unemployment Rate",
    subtitle = "Claimant Count Rate, 2020",
    x = NULL,
    y = "Rate (%)",
    caption = "Source: Nomis / ONS"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    panel.grid.minor = element_blank()
  )

Regional Comparisons

# Fetch data for all regions
regions <- fetch_nomis(
  "NM_1_1",
  time = "latest",
  geography = "TYPE480",  # Regions
  measures = 20201,       # Rate
  sex = 7
)

# Bar chart
regions |>
  arrange(desc(OBS_VALUE)) |>
  ggplot(aes(x = reorder(GEOGRAPHY_NAME, OBS_VALUE), y = OBS_VALUE)) +
  geom_col(fill = "#0066cc", alpha = 0.8) +
  coord_flip() +
  labs(
    title = "Unemployment Rate by Region",
    x = NULL,
    y = "Claimant Count Rate (%)",
    caption = "Source: Nomis / ONS"
  ) +
  theme_minimal()

Gender Comparisons

# Fetch data by sex
by_sex <- fetch_nomis(
  "NM_1_1",
  time = "latest",
  geography = "TYPE499",  # Countries
  measures = 20201,
  sex = c(5, 6)  # Male, Female
)

# Grouped bar chart
by_sex |>
  ggplot(aes(x = GEOGRAPHY_NAME, y = OBS_VALUE, fill = SEX_NAME)) +
  geom_col(position = "dodge", alpha = 0.8) +
  scale_fill_manual(values = c("#0066cc", "#cc0066")) +
  labs(
    title = "Unemployment Rate by Sex and Country",
    x = NULL,
    y = "Rate (%)",
    fill = "Sex",
    caption = "Source: Nomis / ONS"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

Spatial Visualisation

library(sf)

# Fetch spatial data
spatial_data <- fetch_spatial(
  "NM_1_1",
  time = "latest",
  geography = "TYPE480",
  measures = 20201,
  sex = 7
)

# Map
ggplot(spatial_data) +
  geom_sf(aes(fill = OBS_VALUE), colour = "white", size = 0.3) +
  scale_fill_viridis_c(option = "plasma") +
  labs(
    title = "Unemployment Rate by Region",
    fill = "Rate (%)"
  ) +
  theme_void()