Adding points from multiple dataframes to R-leaflet maps

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.

# packages
require(data.table)
require(leaflet)
require(readxl)
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() %>%
addTiles() %>%
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)
print(ausMines_booths)

view raw
mines_2pp.r
hosted with ❤ by GitHub

One thought on “Adding points from multiple dataframes to R-leaflet maps

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s