Skip to content

Instantly share code, notes, and snippets.

@hrbrmstr
Last active July 16, 2023 06:43
Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save hrbrmstr/283850725519e502e70c to your computer and use it in GitHub Desktop.
Save hrbrmstr/283850725519e502e70c to your computer and use it in GitHub Desktop.
Supreme Annotations - moar splainin here: http://rud.is/b/2016/03/16/supreme-annotations/ - NOTE: this requires the github version of ggplot2
library(ggplot2)
dat <- read.csv("supreme_court_vacancies.csv",
col.names=c("year", "wait"))
# We only want every other tick labeled
xlabs <- seq(1780, 2020, by=10)
xlabs[seq(2, 24, by=2)] <- " "
# Pretty long caption
caption <- "Note: Vacancies are counted as the number of days between a justice's death, retirement or resignation and the successor justice's swearing in (or commissioning in the case of a recess appointment) as a member of the court.Sources: U.S. Senate, 'Supreme Court Nominations, present-1789'; Supreme Court, 'Members of the Supreme Court of the United States'; Pew Research Center calculations"
caption <- paste0(strwrap(caption, 160), sep="", collapse="\n")
# you could probably just use caption <- label_wrap_gen(160)(caption) instead
annot <- read.table(text=
"year|wait|just|text
1848|860|0|Robert Cooper Grier was sworn in Aug 10, 1846,<br>841 days after the death of Henry Baldwin
1969|440|1|Henry Blackmun was sworn<br>in June 9, 1970, 391 days<br>after Abe Fortas resigned.
1990|290|0|Anthony Kennedy<br>was sworn in Feb.<br>18, 1988, 237<br>days after Lewis<br>Powell retired.",
sep="|", header=TRUE, stringsAsFactors=FALSE)
annot$text <- gsub("<br>", "\n", annot$text)
gg <- ggplot()
gg <- gg + geom_point(data=dat, aes(x=year, y=wait))
gg <- gg + geom_label(aes(x=1780, y=900, label="days"),
family="OpenSans-CondensedLight",
size=3.5, hjust=0, label.size=0, color="#2b2b2b")
gg <- gg + geom_label(data=annot, aes(x=year, y=wait, label=text, hjust=just),
family="OpenSans-CondensedLight", lineheight=0.95,
size=3, label.size=0, color="#2b2b2b")
gg <- gg + scale_x_continuous(expand=c(0,0),
breaks=seq(1780, 2020, by=10),
labels=xlabs, limits=c(1780,2020))
gg <- gg + scale_y_continuous(expand=c(0,10),
breaks=seq(100, 900, by=100),
limits=c(0, 1000))
gg <- gg + labs(x=NULL, y=NULL,
title="Lengthy Supreme Court vacancies are rare now, but weren't always",
subtitle="Supreme Court vacancies, by duration",
caption=caption)
gg <- gg + theme_minimal(base_family="OpenSans-CondensedLight")
gg <- gg + theme(panel.grid=element_line())
gg <- gg + theme(panel.grid.major.y=element_line(color="#2b2b2b", linetype="dotted", size=0.15))
gg <- gg + theme(panel.grid.major.x=element_blank())
gg <- gg + theme(panel.grid.minor.x=element_blank())
gg <- gg + theme(panel.grid.minor.y=element_blank())
gg <- gg + theme(axis.line=element_line())
gg <- gg + theme(axis.line.x=element_line(color="#2b2b2b", size=0.15))
gg <- gg + theme(axis.ticks=element_line())
gg <- gg + theme(axis.ticks.x=element_line(color="#2b2b2b", size=0.15))
gg <- gg + theme(axis.ticks.y=element_blank())
gg <- gg + theme(axis.ticks.length=unit(5, "pt"))
gg <- gg + theme(plot.margin=unit(rep(0.5, 4), "cm"))
gg <- gg + theme(axis.text.y=element_text(margin=margin(r=-5)))
gg <- gg + theme(plot.title=element_text(family="OpenSans-CondensedBold", margin=margin(b=15)))
gg <- gg + theme(plot.subtitle=element_text(family="OpenSans-CondensedLightItalic"))
gg <- gg + theme(plot.caption=element_text(size=8, hjust=0, margin=margin(t=15)))
gg
year wait
1845 841
1792 152
1793 43
1795 103
1795 70
1795 4
1799 37
1800 141
1801 180
1803 98
1806 62
1811 504
1811 154
1823 166
1825 133
1829 55
1830 500
1835 264
1835 164
1836 483
1842 314
1845 440
1845 6
1851 17
1852 260
1857 111
1862 780
1862 584
1862 293
1864 66
1869 43
1872 43
1873 301
1878 275
1880 111
1880 19
1882 162
1882 66
1887 244
1887 191
1890 293
1891 76
1892 39
1892 266
1894 244
1896 152
1897 57
1902 6
1903 84
1906 207
1909 199
1909 72
1910 166
1910 45
1910 17
1911 154
1914 92
1916 156
1916 121
1920 55
1922 53
1922 10
1924 53
1929 14
1930 80
1931 62
1936 76
1938 58
1938 10
1939 207
1939 76
1941 158
1941 0
1942 137
1942 14
1944 58
1946 64
1948 35
1953 25
1955 170
1956 0
1956 23
1958 0
1962 37
1962 21
1964 68
1968 0
1968 111
1970 391
1972 115
1972 103
1976 41
1981 82
1986 2
1987 237
1990 19
1990 82
1992 43
1994 0
2005 0
2005 25
2009 41
2010 41
@douglas24
Copy link

Is it possible to move the caption all the way to the left like it is in the original image?

@hrbrmstr
Copy link
Author

hrbrmstr commented Apr 8, 2018

Not sure that I follow the question. Also the IFTTT rule that gives me notifications for gist comments is not 100% so comments to https://rud.is/b/2016/03/16/supreme-annotations/ are much more reliable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment