In-class example
Here’s the code we’ll be using in class. Download it and store it with the rest of your materials for this course. If simply clicking doesn’t trigger download, you should right-click and select “save link as…”.
Presidential elections code-through
We’re working with elections_historic
from the socviz
package:
library (socviz)
elections_historic
# A tibble: 49 × 19
election year winner win_party ec_pct popular_pct popular_margin votes
<int> <int> <chr> <chr> <dbl> <dbl> <dbl> <int>
1 10 1824 John Quinc… D.-R. 0.322 0.309 -0.104 1.13e5
2 11 1828 Andrew Jac… Dem. 0.682 0.559 0.122 6.43e5
3 12 1832 Andrew Jac… Dem. 0.766 0.547 0.178 7.03e5
4 13 1836 Martin Van… Dem. 0.578 0.508 0.142 7.63e5
5 14 1840 William He… Whig 0.796 0.529 0.0605 1.28e6
6 15 1844 James Polk Dem. 0.618 0.495 0.0145 1.34e6
7 16 1848 Zachary Ta… Whig 0.562 0.473 0.0479 1.36e6
8 17 1852 Franklin P… Dem. 0.858 0.508 0.0695 1.61e6
9 18 1856 James Buch… Dem. 0.588 0.453 0.122 1.84e6
10 19 1860 Abraham Li… Rep. 0.594 0.396 0.101 1.86e6
# ℹ 39 more rows
# ℹ 11 more variables: margin <int>, runner_up <chr>, ru_part <chr>,
# turnout_pct <dbl>, winner_lname <chr>, winner_label <chr>, ru_lname <chr>,
# ru_label <chr>, two_term <lgl>, ec_votes <dbl>, ec_denom <dbl>
We start with ggplot()
:
Tell it what data we are plotting:
ggplot (elections_historic)
Map the x and y-axis within aes()
:
ggplot (elections_historic, aes (x = popular_pct, y = ec_pct))
Add a point geometry:
ggplot (elections_historic, aes (x = popular_pct, y = ec_pct)) + geom_point ()
Go back and map color and shape aesthetics:
ggplot (elections_historic, aes (x = popular_pct, y = ec_pct,
color = win_party, shape = two_term)) + geom_point ()
Add labels by mapping the label aesthetic and adding a geom_label
geometry:
ggplot (elections_historic, aes (x = popular_pct, y = ec_pct, label = winner_label,
color = win_party, shape = two_term,
label = winner_label)) +
geom_point () +
geom_text ()
Bells and whistles
Here’s some other stuff I’m adding to make this graph better:
library (ggrepel)
ggplot (elections_historic, aes (x = popular_pct, y = ec_pct, label = winner_label,
color = win_party, shape = two_term,
label = winner_label)) +
geom_point () +
geom_text_repel () +
labs (x = "Percent of popular vote" ,
y = "Percent of Electoral College vote" ,
title = "Presidential Elections: Popular & Electoral College Margins" ,
subtitle = "1824-2016" , color = NULL , size = NULL ) +
scale_y_continuous (labels = scales:: percent) +
scale_x_continuous (labels = scales:: percent) +
scale_color_manual (values = c (yellow, red, blue, "gray" )) +
geom_hline (yintercept = 0.5 , size = 1.4 , color = "gray80" ) +
geom_vline (xintercept = 0.5 , size = 1.4 , color = "gray80" ) + theme (legend.position = "none" )