R leaflet addPolygons - 如何孵化多边形?

R leaflet addPolygons - how to hatch polygons?

使用 leaflet()addPolygons(),可以根据特定变量为多边形(下例中的美国各州)着色。

问/ 有没有办法孵化多边形以便在地图中添加第二个信息?

颜色给出第一个信息(集群归属),我想添加第二个信息(例如名称中带有 'New' 的状态)。同时可视化这两种信息可能非常有用。

library(rgdal)

# From https://www.census.gov/geo/maps-data/data/cbf/cbf_state.html
states <- readOGR(
  dsn   = "2.Data/shp/cb_2013_us_state_20m.shp", 
  layer = "cb_2013_us_state_20m", 
  GDAL1_integer64_policy = T
)

sample <- states %>% 
  subset(STUSPS %in% c("CT","ME","MA","NH","RI","VT","NY","NJ","PA"))

MaPalette1 <- colorFactor(c('red', 'blue', 'green', 'grey', 'black', 'pink', 'orange', 'yellow', 'purple', 'white'), 
                          sample@data$STATEFP)

leaflet(sample) %>%
  addPolygons(
    color       = 'black', 
    weight      = 1,
    fillOpacity = 1,
    fillColor   = ~ MaPalette1(STATEFP)
)

我试着给多边形的边界上色,但是由于地图中已经有很多颜色,所以不容易可视化。

我也测试了addLayersControl(),但是我想在同一图层上可视化信息,并且两个颜色图层叠加产生新的颜色,信息无法理解。

在此先感谢您的帮助。 当我说 'hatching' 时,我认为是这样的:

由于您的问题已经存在几个月了,如果您找到其他解决方案并与我们分享,请告诉我。 HatchedPolygons 包应该可以满足您的需求。下面是一个工作示例,其中包含您尝试使用的相同数据:

devtools::install_github("statnmap/HatchedPolygons")
library(diplyr)

# From https://www.census.gov/geo/maps-data/data/cbf/cbf_state.html
states <- rgdal::readOGR(
  dsn   = "~/Downloads/cb_2013_us_state_20m/cb_2013_us_state_20m.shp", 
  layer = "cb_2013_us_state_20m", 
  GDAL1_integer64_policy = T
)

sample <- states %>% 
  subset(STUSPS %in% c("CT","ME","MA","NH","RI","VT","NY","NJ","PA"))

MaPalette1 <- colorFactor(c('red', 'blue', 'green', 'grey', 'black', 'pink', 'orange', 'yellow', 'purple', 'white'), sample@data$STATEFP)

# hatching
sample3 <- sample %>% 
  subset(STUSPS %in% c("NH", "NJ")) 
sample3.hatch <- HatchedPolygons::hatched.SpatialPolygons(sample3, density = c(6,4), angle = c(45, 135))

# plot
leaflet(sample) %>%
  addPolygons(
    color       = 'black', 
    weight      = 1,
    fillOpacity = 1,
    fillColor   = ~ MaPalette1(STATEFP)
  ) %>% 
  addPolylines(
    data = sample3.hatch,
    color = c("white", "red"),
    weight = 1.0
  )