# Libraries
box::use(
gg = ggplot2,
ggf = geofacet,
ggt = ggtext,
tidytuesdayR[tt_load],
ggp = patchwork,
data.table[...],
sht = showtext,
syf = sysfonts
)
# Get data
dat <- tt_load("2025-06-24")
dat_month <- dat$cases_month
setDT(dat_month)Measles cases across the world
TidyTuesday 2025-06-24
r
geofacet
data.table
data-viz
Overview
This week’s TidyTuesday focused on measles cases across the world. I explored a very minimal viz around red rashes using a global point geofacet.
Dataset
Analysis
Data Preparation
# Aggregate by year
dat_month <- dat_month[,
.(measles_clinical = sum(measles_clinical)),
by = .(year, iso3)
]Visualization
# Get grid
data("world_countries_grid1", package = "geofacet")
# Fonts
syf$font_add_google("Fascinate Inline", "Fascinate Inline")
sht$showtext_auto()
sht$showtext_opts(dpi = 600)
title_font <- "Fascinate Inline"
# Measles colors
colors <- c(
'#F4A6A6', # light coral, reflecting the lighter areas of the rash
'#E25822', # a strong red-orange, often used for rashes or spots
'#B22222' # a deep firebrick, suitable for the darker spots or advanced rash stages
)
# Tag
tag <- "<span style='color:#B22222;font-size:22pt;'>Clinically-compatible measles cases</span><br><br>
<span style='color:#E25822;font-size:14pt;'>A suspected case with fever, maculopapular rash, and at least one of cough, coryza, or conjunctivitis, without a clinical specimen or epidemiological link to a confirmed case.</span>"
# Plot
g <- gg$ggplot(dat_month) +
gg$aes(
x = year,
y = measles_clinical,
color = measles_clinical,
size = measles_clinical
) +
gg$geom_point() +
gg$scale_size_continuous(range = c(0.3, 4.5)) +
gg$scale_color_gradientn(colors = colors) +
ggf$facet_geo(~iso3, grid = 'world_countries_grid1') +
gg$theme_void() +
gg$labs(tag = tag) +
gg$theme(
plot.background = gg$element_rect(fill = 'white'),
strip.background = gg$element_blank(),
strip.text.x = gg$element_blank(),
legend.position = 'none',
plot.tag.position = c(0.05, 0.15),
plot.tag = ggt$element_textbox_simple(
family = title_font,
width = gg$unit(4.5, "inch"),
lineheight = 1.2,
hjust = 0
)
)
# Create the main visualization
gg$ggsave('week_25.png', g, height = 10, width = 16, dpi = 600)Technical Notes
- Data Source: TidyTuesday GitHub Repository
- Analysis Date: 2025-06-24
- Key Libraries: ggplot2, data.table, geofacet, ggtext
Viz
