R传单addPolygons-如何填充多边形?

时间:2019-01-29 18:10:26

标签: r leaflet polygon

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

Q / 是否可以使用阴影线填充多边形,以便在地图中添加第二条信息?

颜色提供第一个信息(群集所属),我想添加第二个信息(例如,名称中带有“ 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)
)

enter image description here

我尝试为多边形的边界上色,但是由于地图中已经有很多颜色,因此不容易可视化。

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

预先感谢您的帮助。 当我说“孵化”时,我会这样想:

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您的问题已有数月之久,因此,如果您找到其他解决方案,请告诉我并分享。软件包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
  )