{r s15}
enf <- tibble(
year=2018:2024,
viol=c(48,52,44,38,61,75,88),
sanc=c(12,15,11, 9,18,25,32),
fine=c(8.2,11.5,9.0,6.5,14.2,20.5,28.0)
)
p_vs <- enf |>
select(year,viol,sanc) |>
pivot_longer(-year,names_to="t",values_to="n") |>
ggplot(aes(year,n,fill=t)) +
geom_col(position="dodge",width=0.6,alpha=0.9) +
geom_text(aes(label=n),position=position_dodge(width=0.6),
vjust=-0.38,size=2.8,fontface="bold",colour=ncdmb_dark) +
scale_fill_manual(values=c("viol"=ncdmb_red,"sanc"=ncdmb_green),
labels=c("Sanctions Issued","Violations Recorded")) +
scale_x_continuous(breaks=2018:2024) +
scale_y_continuous(expand=expansion(mult=c(0,0.18))) +
labs(title="Violations vs. Sanctions (2018–2024)",
subtitle="Sanction rate ~36% — enforcement gap is material",
x=NULL,y="Cases",fill=NULL,
caption="NCDMB Enforcement Division") +
theme_ncdmb()
p_fn <- ggplot(enf,aes(year,fine)) +
geom_area(fill=ncdmb_gold,alpha=0.55) +
geom_line(colour=ncdmb_gold,linewidth=1.2) +
geom_point(colour=ncdmb_dark,size=2.8) +
geom_text(aes(label=dollar(fine,suffix="mn",accuracy=0.1)),
vjust=-0.65,size=2.8,fontface="bold") +
scale_y_continuous(labels=dollar_format(prefix="$",suffix="mn"),
expand=expansion(mult=c(0,0.22))) +
scale_x_continuous(breaks=2018:2024) +
labs(title="Financial Sanctions Imposed ($mn/yr)",
subtitle="Growing but collection efficiency remains a challenge",
x=NULL,y="Total Fines ($mn)",
caption="NCDMB Legal & Compliance Division") +
theme_ncdmb()
p_vs | p_fn