Story pitch

Australia is still wealthy by global standards, but the feeling of being “lucky” is becoming less evenly shared. This five-chart story uses open World Bank indicators to show a quiet split: national prosperity has grown, inflation shocks have made everyday costs more visible, and young people continue to face a weaker labour-market position than the overall population. The story is designed for The Conversation as a visual pitch: not that Australia is unlucky, but that the old national myth now needs a generational test. If a country remains rich while younger Australians experience more uncertainty, the next policy question is not only “is the economy growing?” but “who feels the growth?”

Editor topic: Topic 2 — Social and economic issues.
Article format: Five charts.
Rubric strategy: The HTML knit contains five interactive visualisations for RPubs/shinyapps.io. The PDF knit contains the same five publication-ready static versions for checking, submission backup, and code review.
Data source: World Bank World Development Indicators, loaded from wdi_australia_backup.csv so the file knits without relying on a live internet connection.

Data collection and preparation

backup_file <- "wdi_australia_backup.csv"
if (!file.exists(backup_file)) {
  stop("wdi_australia_backup.csv is missing. Put it in the same folder as this Rmd file, then knit again.")
}

wdi_raw <- read_csv(backup_file, show_col_types = FALSE) %>%
  mutate(
    year = as.integer(year),
    value = as.numeric(value),
    indicator = as.character(indicator),
    label = as.character(label),
    short_label = as.character(short_label)
  ) %>%
  filter(!is.na(year), !is.na(value)) %>%
  arrange(indicator, year)

wdi_wide <- wdi_raw %>%
  select(year, short_label, value) %>%
  pivot_wider(names_from = short_label, values_from = value)

latest_year <- max(wdi_raw$year, na.rm = TRUE)

index_2010 <- wdi_raw %>%
  group_by(indicator, label, short_label) %>%
  mutate(base_2010 = value[year == 2010][1], index_2010 = 100 * value / base_2010) %>%
  ungroup() %>%
  filter(!is.na(base_2010), !is.na(index_2010))

latest_values <- wdi_raw %>%
  group_by(indicator, label, short_label) %>%
  slice_max(year, n = 1, with_ties = FALSE) %>%
  ungroup()

Chart 1 — The national story still looks lucky

Australia’s long-run prosperity story is strong. GDP per person has generally increased since the 1990s, although year-to-year growth shows that national prosperity is not a straight line. This chart starts with the familiar “lucky country” story before the next charts test who feels that luck.

chart1_data <- wdi_wide %>%
  filter(!is.na(`GDP per capita`), !is.na(`GDP growth`)) %>%
  mutate(
    growth_group = case_when(
      `GDP growth` < 0 ~ "Negative growth",
      `GDP growth` < 2 ~ "Low growth",
      TRUE ~ "Stronger growth"
    ),
    text = paste0(
      "Year: ", year,
      "<br>GDP per person: ", dollar(`GDP per capita`),
      "<br>GDP growth: ", round(`GDP growth`, 1), "%"
    )
  )

gg1 <- ggplot(chart1_data, aes(x = year, y = `GDP per capita`, colour = growth_group, text = text)) +
  geom_line(aes(group = 1), colour = conv_grey, linewidth = 0.7) +
  geom_point(size = 2.2) +
  scale_colour_manual(values = c("Negative growth" = conv_red, "Low growth" = conv_orange, "Stronger growth" = conv_blue)) +
  scale_y_continuous(labels = dollar_format()) +
  labs(
    title = "Prosperity rose, but growth has not always felt smooth",
    subtitle = "Australia, 1990 to latest available World Bank year",
    x = "Year", y = "GDP per capita, constant 2015 US$", colour = "Growth category",
    caption = "Multivariate design: year, GDP per capita, GDP growth category, and detailed hover labels in HTML. Source: World Bank WDI."
  ) + base_theme

make_output(gg1)

Chart 2 — The cost shock changed the mood

The national myth weakens when living costs rise faster than people expect. By indexing multiple indicators to 2010, the chart compares the direction of inflation, unemployment and economic output on a common baseline. This is not a household budget chart, but it shows why “growth” alone does not capture pressure felt by ordinary people.

chart2_data <- index_2010 %>%
  filter(short_label %in% c("Inflation", "Unemployment", "GDP per capita"), year >= 2010) %>%
  mutate(
    text = paste0(
      "Year: ", year,
      "<br>Indicator: ", short_label,
      "<br>Index, 2010 = 100: ", round(index_2010, 1),
      "<br>Actual value: ", round(value, 2)
    )
  )

gg2 <- ggplot(chart2_data, aes(x = year, y = index_2010, colour = short_label, text = text)) +
  geom_hline(yintercept = 100, linetype = "dashed", colour = "grey55") +
  geom_line(linewidth = 1) +
  geom_point(size = 1.8) +
  scale_colour_manual(values = c("Inflation" = conv_red, "Unemployment" = conv_orange, "GDP per capita" = conv_blue)) +
  labs(
    title = "A richer country can still feel more expensive",
    subtitle = "Selected indicators indexed to 2010 = 100",
    x = "Year", y = "Index, 2010 = 100", colour = "Indicator",
    caption = "Multivariate design: time, indexed value, indicator type, and original values in HTML hover labels. Source: World Bank WDI."
  ) + base_theme

make_output(gg2)

Chart 3 — Young people face a different labour market

The clearest generational pressure appears in the labour market. Youth unemployment has remained well above the overall unemployment rate. The gap matters because early career instability can shape income, housing options and confidence long after the headline unemployment rate improves.

chart3_data <- wdi_wide %>%
  filter(!is.na(Unemployment), !is.na(`Youth unemployment`)) %>%
  mutate(
    youth_gap = `Youth unemployment` - Unemployment,
    text = paste0(
      "Year: ", year,
      "<br>Total unemployment: ", round(Unemployment, 1), "%",
      "<br>Youth unemployment: ", round(`Youth unemployment`, 1), "%",
      "<br>Youth gap: ", round(youth_gap, 1), " percentage points"
    )
  )

gg3 <- ggplot(chart3_data, aes(x = Unemployment, y = `Youth unemployment`, colour = year, size = youth_gap, text = text)) +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", colour = "grey55") +
  geom_point(alpha = 0.85) +
  scale_colour_gradient(low = conv_teal, high = conv_red) +
  scale_size_continuous(range = c(2, 7)) +
  labs(
    title = "Youth unemployment sits above the headline rate",
    subtitle = "Each point is one year; larger points show a bigger youth unemployment gap",
    x = "Total unemployment (% of labour force)", y = "Youth unemployment (% of labour force)",
    colour = "Year", size = "Gap",
    caption = "Multivariate design: total unemployment, youth unemployment, year, and youth gap. Source: World Bank WDI."
  ) + base_theme

make_output(gg3)

Chart 4 — Education expanded, but the transition is still uneven

Higher education is often sold as a path to security. Tertiary enrolment has expanded, but youth unemployment has not disappeared. This chart frames a blind spot: more education does not automatically mean smoother early-career outcomes.

chart4_data <- wdi_wide %>%
  filter(!is.na(`Tertiary enrolment`), !is.na(`Youth unemployment`), !is.na(`GDP per capita`)) %>%
  mutate(
    period = case_when(
      year < 2000 ~ "1990s",
      year < 2010 ~ "2000s",
      year < 2020 ~ "2010s",
      TRUE ~ "2020s"
    ),
    text = paste0(
      "Year: ", year,
      "<br>Tertiary enrolment: ", round(`Tertiary enrolment`, 1), "% gross",
      "<br>Youth unemployment: ", round(`Youth unemployment`, 1), "%",
      "<br>GDP per person: ", dollar(`GDP per capita`)
    )
  )

gg4 <- ggplot(chart4_data, aes(x = `Tertiary enrolment`, y = `Youth unemployment`, colour = period, size = `GDP per capita`, text = text)) +
  geom_point(alpha = 0.8) +
  geom_smooth(aes(group = 1), method = "loess", se = FALSE, colour = conv_grey, linewidth = 0.8) +
  scale_colour_manual(values = c("1990s" = conv_grey, "2000s" = conv_teal, "2010s" = conv_blue, "2020s" = conv_red)) +
  scale_size_continuous(labels = dollar_format(), range = c(2, 8)) +
  labs(
    title = "More study has not removed early-career insecurity",
    subtitle = "Tertiary enrolment compared with youth unemployment",
    x = "Tertiary enrolment (% gross)", y = "Youth unemployment (%)",
    colour = "Period", size = "GDP per person",
    caption = "Multivariate design: tertiary enrolment, youth unemployment, period, GDP per capita, and HTML hover labels. Source: World Bank WDI."
  ) + base_theme

make_output(gg4)

Chart 5 — A scorecard for the next version of the lucky country

The final chart turns the story into an editorial question. Compared with 2010, some indicators show strength, while others show social pressure. This scorecard is not a complete wellbeing index. It is a compact visual prompt for the article: the next version of Australia’s luck should be judged by whether prosperity, stability and opportunity move together.

chart5_data <- index_2010 %>%
  filter(short_label %in% c("GDP per capita", "Life expectancy", "Tertiary enrolment", "Inflation", "Unemployment", "Youth unemployment")) %>%
  group_by(short_label) %>%
  slice_max(year, n = 1, with_ties = FALSE) %>%
  ungroup() %>%
  mutate(
    direction = if_else(short_label %in% c("Inflation", "Unemployment", "Youth unemployment"), "Pressure indicator", "Strength indicator"),
    short_label = fct_reorder(short_label, index_2010),
    text = paste0(
      "Indicator: ", short_label,
      "<br>Latest year: ", year,
      "<br>Index, 2010 = 100: ", round(index_2010, 1),
      "<br>Actual value: ", round(value, 2),
      "<br>Type: ", direction
    )
  )

gg5 <- ggplot(chart5_data, aes(x = short_label, y = index_2010, fill = direction, text = text)) +
  geom_hline(yintercept = 100, linetype = "dashed", colour = "grey55") +
  geom_col(width = 0.72) +
  coord_flip() +
  scale_fill_manual(values = c("Pressure indicator" = conv_red, "Strength indicator" = conv_blue)) +
  labs(
    title = "The lucky country now needs a generational scorecard",
    subtitle = "Latest available value compared with 2010 baseline",
    x = NULL, y = "Index, 2010 = 100", fill = "Indicator type",
    caption = "Multivariate design: indicator, latest index value, indicator type, original value, and year. Source: World Bank WDI."
  ) + base_theme

make_output(gg5, height = 450)

Editorial conclusion

The five charts suggest a sharper pitch than a simple “Australia is doing well” or “Australia is in crisis” story. Australia remains prosperous, but the distribution of confidence is uneven. Inflation pressure and youth labour-market risk make the old phrase “the lucky country” feel less convincing for younger Australians. The most newsworthy angle is the gap between national economic success and generational experience.

Acknowledgements

Generative AI was used to assist with story planning, RMarkdown structure, coding support, wording refinement and troubleshooting. The author reviewed and adapted the output, checked the code, and remains responsible for the final submission. Data were sourced from the World Bank World Development Indicators. No synthetic data were used.

References

RMIT University Library. (2026, April 16). Citing and referencing guidelines for AI tools. https://rmit.libguides.com/referencing_AI_tools/referencing

World Bank. (2026). World Development Indicators [Data set]. World Bank DataBank. https://databank.worldbank.org/source/world-development-indicators

World Bank. (2026). Australia data profile [Data set]. World Bank Open Data. https://data.worldbank.org/country/australia