【问题标题】:R leaflet addPolygons - how to hatch polygons?R传单addPolygons - 如何孵化多边形?
【发布时间】:2019-06-22 22:37:57
【问题描述】:

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

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

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

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(),但是我很想把同一层的信息可视化,两个颜色层叠加产生新的颜色,信息看不懂。

提前感谢您的帮助。 当我说“孵化”时,我想是这样的:

【问题讨论】:

    标签: r leaflet polygon


    【解决方案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
      )
    

    【讨论】:

    • 感谢您的解决方案!这个问题在我这边仍未解决,我不知道包 HatchedPolygons。效果很好。
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 2016-11-10
    • 1970-01-01
    • 2016-04-18
    • 2019-02-04
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多