File:US Abortion By Gestational Age 2016 Histogram.svg
Data is taken from the Centers for Disease Control and Prevention.[1]
From TABLE 7. Reported abortions, by known weeks of gestation and reporting area of occurrence — selected reporting areas, United States, 2016
and
TABLE 9. Reported abortions obtained at ≤13 weeks’ gestation, by weeks of gestation and reporting area of occurrence — selected reporting areas, United States, 2016-
US 2004
-
US 2002
-
UK 2004
-
US 2016
This plot was created with Matplotlib.
Python code
Source code |
---|
"""
From:
https://www.cdc.gov/mmwr/volumes/68/ss/ss6811a1.htm
TABLE 7. Reported abortions, by known weeks of gestation and reporting area of
occurrence — selected reporting areas, United States, 2016
TABLE 9. Reported abortions obtained at ≤13 weeks’ gestation, by weeks of
gestation and reporting area of occurrence — selected reporting areas,
United States, 2016
It says ≤6, and ≤13, so I assume the "7 weeks" bin is (6, 7], for instance.
It says 18–20 and ≥21, though, which I assume means (20, 40].
"""
import numpy as np
import matplotlib.pyplot as plt
table = np.array([[0, 6, 148369],
[7, 7, 76293],
[8, 8, 58030],
[9, 9, 39653],
[10, 10, 24280],
[11, 11, 19742],
[12, 12, 14680],
[13, 13, 11770],
[14, 15, 15602],
[16, 17, 9089],
[18, 20, 8454],
[21, 40, 5303]])
freqs = table[:, 2]
freqs = freqs / 1000
bins = np.concatenate((table[0:1, 0], table[:, 1]))
assert len(bins) == len(freqs) + 1
widths = bins[1:] - bins[:-1]
heights = freqs/widths
heights = freqs.astype(np.float)/widths
fig, ax = plt.subplots(figsize=(4.5, 3.8))
ax.bar(bins[:-1], heights, width=widths, align='edge',
facecolor='#B2BFD9', edgecolor='#778BB2', zorder=2)
"""
Draw to match
https://en.wikipedia.org/key/File:Abortionmethods.png
"""
kwargs = {'xycoords': ('data', 'axes fraction'),
'horizontalalignment': 'center',
'verticalalignment': 'center'}
ax.axvspan(0, 12, color='#ACE07B')
ax.annotate('1st trimester\n(0-12 weeks)', (6, 0.93), **kwargs)
ax.axvspan(12, 28, color='#D8E370')
ax.annotate('2nd trimester\n(13-28 weeks)', (20, 0.93), **kwargs)
ax.axvspan(28, 40, color='#E1BA72')
ax.annotate('3rd trimester\n(29-40 weeks)', (34, 0.93), **kwargs)
ax.axvline(12, c='gray', lw=0.2, zorder=1)
ax.axvline(28, c='gray', lw=0.2, zorder=1)
ax.set_xlim(0, 40)
ax.set_ylim(0, 90)
ax.set_xlabel('Gestational age [weeks]')
ax.set_ylabel('Abortions (×1000)')
ax.minorticks_on()
plt.tight_layout()
plt.show()
|