这是2013年的问题。我不确定是否leaflet
当时包裹已经出来了。现在已经2017年年底了,你的任务是有可能完成的。如果您仍然需要执行类似的任务,我想为您留下以下内容。在本例中,数据集中缺少一些县。这些县存在于 USA 多边形数据中,但在mydata
。所以我将这些县添加到mydata
using setdiff()
and bind_rows()
。当您绘制传单地图时,您需要指定您的调色板。Avg_yield
是一个连续变量。所以你用colorNumeric()
。我留下了显示传单地图一部分的屏幕截图。
library(raster)
library(leaflet)
library(tidyverse)
# Get USA polygon data
USA <- getData("GADM", country = "usa", level = 2)
### Get data
mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv",
stringsAsFactors = FALSE) %>%
dplyr::select(COUNTY_NAME, Avg_yield)
### Check counties that exist in USA, but not in mydata
### Create a dummy data frame and bind it with mydata
mydata <- data.frame(COUNTY_NAME = setdiff(USA$NAME_2, mydata$COUNTY_NAME),
Avg_yield = NA,
stringsAsFactors = FALSE) %>%
bind_rows(mydata)
### Create a color palette
mypal <- colorNumeric(palette = "viridis", domain = mydata$Avg_yield)
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 39.8283, lng = -98.5795, zoom = 4) %>%
addPolygons(data = USA, stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
fillColor = ~mypal(mydata$Avg_yield),
popup = paste("Region: ", USA$NAME_2, "<br>",
"Avg_yield: ", mydata$Avg_yield, "<br>")) %>%
addLegend(position = "bottomleft", pal = mypal, values = mydata$Avg_yield,
title = "Avg_yield",
opacity = 1)
![enter image description here](https://i.stack.imgur.com/6j9sa.png)
![enter image description here](https://i.stack.imgur.com/1nCSa.jpg)