DataViz Lab 08

Kristine Vorwerk and Brough Morris

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
polls.16 <- read.csv("http://projects.fivethirtyeight.com/general-model/president_general_polls_2016.csv")
poll_by_grade <- polls.16 %>% 
  select(grade, state, adjpoll_trump) %>% 
  filter(state == "U.S.") %>% 
  filter(grade != "") %>%
  group_by(grade) %>%
  summarize(number = n(), avg_trump = mean(adjpoll_trump), error = 1/sqrt(n()))

poll_by_grade
## # A tibble: 9 × 4
##    grade number avg_trump      error
##   <fctr>  <int>     <dbl>      <dbl>
## 1      A     87  42.72581 0.10721125
## 2     A-   1215  38.89732 0.02868877
## 3     A+    114  42.93875 0.09365858
## 4      B    162  42.84969 0.07856742
## 5     B-     96  44.07257 0.10206207
## 6     B+    105  42.68811 0.09759001
## 7      C      3  41.95996 0.57735027
## 8     C-    126  43.27857 0.08908708
## 9     C+    546  43.87407 0.04279605
limits <- aes(ymax = avg_trump + error*100, ymin = avg_trump - error*100)
ggplot(poll_by_grade, aes(x=grade, y=avg_trump, fill = grade))+
  geom_bar(stat="Identity") + 
  theme(legend.position = "none") + 
  xlab("Poll Grade") +
  ylab("Percent Trump") + 
  ylim(0, 70) +
  geom_errorbar(limits, width = 0.25) + 
  geom_hline(aes(yintercept = 47))
## Warning: Removed 1 rows containing missing values (geom_errorbar).