\documentclass{standalone}
\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input tufte-manila-paper
beginfig(1);
numeric i, deaths[], ymax, dmax; i = 0; dmax = 0;
for n = 1,
0, 2, 0, 0, 2, 0, 0,
1, 0, 1, 2, 3,70,127,
76,71,45,37,32,30,24,
18,15, 6,13, 6, 8, 6,
5, 2, 3, 0, 0, 2, 3,
0, 0, 2, 0, 2, 1, 0:
deaths[incr i] = n; if n > dmax: dmax := n; fi
endfor
numeric ymax; ymax = 20 * ceiling (dmax / 20);
numeric days, day_number[]; days = 0;
for n = 19,
20,21,22,23,24,25,26,
27,28,29,30,31, 1, 2,
3, 4, 5, 6, 7, 8, 9,
10,11,12,13,14,15,16,
17,18,19,20,21,22,23,
24,25,26,27,28,29,30:
day_number[incr days] = n;
endfor
numeric u, v; days * u = 5in = ymax * 2v;
path xx; xx = origin -- (days * u, 0); draw xx;
path yy; yy = origin -- (0, dmax * v); draw yy;
for x = 1 upto days:
cutdraw (x * u, 0) -- (x * u, deaths[x] * v)
withpen pencircle scaled 2 withcolor 5/8[2/3 red, white];
draw (origin -- 2 down) shifted (x * u, 0);
if x mod 7 = 2: label.bot("\small" & decimal day_number[x], (x*u, -2)); fi
if x = 1: label.lrt("\small August", (x * u + 1, -12));
elseif x = 15: label.lrt("\small September", (x * u + 1/2 u, -12));
fi
endfor
for y = 10 step 10 until ymax:
draw (origin -- 2 left) shifted (0, y * v);
undraw xx shifted (0, y * v) withpen pencircle scaled 1/2;
if y mod 20 = 0: label.lft(decimal y, (-2, y * v)); fi
endfor
label.lrt(btex \vbox{\openup 0pt\halign{#\hss\cr
Deaths from\cr cholera, each\cr day during\cr the epidemic\cr
}} etex, (u, ymax * v + 6));
z0 = (21u, deaths[21] * v ) shifted 2 up;
z1 = z0 shifted (13, 34);
draw z0 -- z1 withpen pencircle scaled 1/4;
label.urt(btex \vbox{\openup 0pt\halign{#\hss\cr
Handle removed from\cr
the Broad Street pump,\cr
Friday 8 September 1854\cr
}} etex, z1 shifted 17 left);
input show_name
endfig;
\end{mplibcode}
\end{document}