I’ve been getting interested in plotting electoral data onto maps — and as a result have been looking at how combinations of information might explain the results of the 2019 election.
To do so, i have been plotting the booth-by-booth results onto a map, as well as data from other information sources. This was tricky initially, but once you get the knack it makes a lot of sense (in that Hadley Wickham way).
The key is moving the data = XYZ bit from inside the leaflet() function to the first argument of the addCircleMarkers() function.
The other trick to note below is that I set the bins for the colorBin function manually. This is necessary, as the mid point of the range is not zero.
Building on my earlier single-layer maps example, in this case we have the location of mines and the two-party-preferred election 2019 results by polling booth.
|twoppReps <- as.data.table(read.csv("https://tallyroom.aec.gov.au/Downloads/HouseTppByPollingPlaceDownload-24310.csv", skip = 1L))|
|pollingPlaces <- as.data.table(read.csv("https://tallyroom.aec.gov.au/Downloads/GeneralPollingPlacesDownload-24310.csv", skip = 1))|
|operatingMines <- as.data.table(read_excel("C:/Users/mcoog/Dropbox/blogs/operating_mines.xls"))|
|# inner join to add lat and longtitude data|
|twoppReps[pollingPlaces[, list(PollingPlaceID, Latitude, Longitude)],|
|`:=` (lat = i.Latitude, long = i.Longitude),|
|on = 'PollingPlaceID']|
|# part 1 bin the data so that 0 = neutral, -100 = red and +100 = blue|
|swing_bins <- c(–100, –25, –10, –5, –2, –1, 0, 1, 2, 5, 10, 25, 100)|
|swing_pal <- colorBin(c("#f00505", "#fafafa", "#0520f0"),|
|bins = swing_bins)|
|ausMines_booths <- leaflet() %>%|
|addCircleMarkers(data = twoppReps,|
|lat = ~lat, lng = ~long, popup = ~PollingPlace,|
|col = ~swing_pal(Swing),|
|stroke = FALSE, fillOpacity = 0.3, opacity = 0.3) %>%|
|addCircleMarkers(data = operatingMines,|
|lat = ~Latitude, lng = ~Longitude, popup = ~Name,|
|color = 'black', radius = 7, stroke = FALSE,|
|opacity = 0.50, fillOpacity = 0.50)|