r - leaflet: Annotating numeric variable on the map -
i made plot
with following code.
library(xml) library(ggplot2) library(scales) library(plyr) library(maps) unemp <- readhtmltable('http://www.bls.gov/web/laus/laumstrk.htm', colclasses = c('character', 'character', 'numeric'))[[2]] names(unemp) <- c('rank', 'region', 'rate') unemp$region <- tolower(unemp$region) us_state_map <- map_data('state') map_data <- merge(unemp, us_state_map, = 'region') map_data <- arrange(map_data, order) states <- data.frame(state.center, state.abb) p1 <- ggplot(data = map_data, aes(x = long, y = lat, group = group)) p1 <- p1 + geom_polygon(aes(fill = cut_number(rate, 5))) p1 <- p1 + geom_path(colour = 'gray', linestyle = 2) p1 <- p1 + scale_fill_brewer('unemployment rate (jan 2011)', palette = 'set1') p1 <- p1 + coord_map() p1 <- p1 + geom_text(data = states, aes(x = x, y = y, label = state.abb, group = null), size = 2) p1 <- p1 + theme_bw() p1
now want reproduce same plot leaflet
r
package.
library(leaflet) leaflet(data = map_data) %>% setview(lng = -77.0167, lat = 38.8833, zoom = 4) %>% addtiles()
i'd highly appreciate if guide how annotate rate
map_data
data.frame on map leaflet
geom_polygon
did in ggplot2
version. highly appreciated. thanks
maybe here's 1 way starting point:
mapstates = map("state", fill = true, plot = false) rates <- cut_number(unemp$rate[match(sub("(.*?):.*", "\\1", mapstates$names), unemp$region)], 5) leaflet(data = mapstates) %>% addtiles() %>% addpolygons(fillcolor = brewer_pal(palette = "set1")(8)[as.numeric(rates)], stroke = false) %>% addlegend(colors = brewer_pal(palette = "set1")(nlevels(rates)), labels = levels(rates), opacity = .2)
add:
with regards other question:
library(raster) pakistan.adm2.spdf <- getdata("gadm", country = "pakistan", level = 2) rates <- cut_number(unemployment.df$unemployment[match(pakistan.adm2.spdf@data$name_2, unemployment.df$id)], 5) leaflet(pakistan.adm2.spdf) %>% addtiles() %>% addpolygons(fillcolor = brewer_pal(palette = "purd")(nlevels(rates))[as.numeric(rates)], stroke = false, fillopacity = .6) %>% addlegend(colors = brewer_pal(palette = "purd")(nlevels(rates)), labels = levels(rates), opacity = .6) %>% setview(lng = 69.374268, lat = 30.028617, zoom = 5)
Comments
Post a Comment