Bump chart of a parliamentary constituency
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
The UK has just held a Westminster election to decide the next government. There are some amazing visualisations of what’s happened to the whole nation, but I think there’s a story to tell about my local constituency.
I live in Midlothian, Scotland. It’s a former mining area and this was once the main employment. Miners were a heavily unionised workforce and I think knowing this helps understand the path of voting patterns.
I’ve been reading John Harris recently, and I think his approach to listen to differing views helps understand what is going on around us. With this in mind, I’ve annotated a plot of election results for Midlothian since 1955. I made the plot in R (code below), and annotated in LibreOffice Draw. The dominance of non-voters since 2001 really highlights how important it is to exercise our democratic right!
Here’s the R code I used for the bump chart:
library(tidyverse) library(lubridate) library(ggalluvial) votes %>% mutate(party = fct_expand(party, "Cons & Unionist"), party = fct_recode(party, `Cons & Unionist` = "Conservative"), party = fct_recode(party, `Cons & Unionist` = "Unionist"), party = fct_recode(party, Green = "Scottish Green"), party = fct_lump(f = party, n = 5), party = fct_relevel(party, "Didn't vote")) %>% group_by(id, date, party) %>% summarise(votes = sum(votes)) %>% left_join(x %>% select(id, pop)) %>% mutate(prop = votes / pop) %>% ggplot(aes(x = as.character(date), y = prop, alluvium = party)) + geom_alluvium(aes(fill = party, colour = party), alpha = .75, decreasing = FALSE) + scale_x_discrete(labels = str_sub(date, 1, 4)) + scale_y_continuous(labels = scales::percent) + scale_colour_manual(values = pal) + scale_fill_manual(values = pal) + labs(x = "Election", y = "Votes", fill = "Party", colour = "Party") + theme_minimal() + theme(text = element_text(size = 20))
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.