问题描述
这是我的数据:https://paste.kodi.tv/omohuzawec
dput 的更新数据输出:已编辑
我正在尝试复制以下情节:
这是我迄今为止用来复制的代码,我唯一想不通的是如何从图例中删除 NA。
pal <- colorFactor(palette = c("#F5DCA4","#E8A46A","#D16769","#B74146"),domain = zipcodes@data$risk.factor)
leaflet(zipcodes) %>%
addProviderTiles("CartoDB.Positron") %>%
addpolygons(
fillColor = ~pal(risk.factor),weight = 1,#weight of lines between zip codes
color = "gray",#color of line between zip codes
fillOpacity = .9,#fill opacity of zip codes
popup = state_popup) %>%
addLegend("bottomright",pal = pal,#pal = palette declared earlier
values = ~risk.factor,title= "Risk: Lowest to Highest",opacity = 1)
正确的代码,这是我们需要的 na.color :
colorFactor(palette = c("#F5DCA4",domain = zipcodes@data$risk.factor,na.color = NA)
解决方法
函数 addLegend()
有一个参数 na.label
,默认设置为 "NA"
。从 here 似乎可以设置 na.label = ""
以从图例中删除 NA 标签。
就做 na.color = NA
colorFactor(palette = c("#F5DCA4","#E8A46A","#D16769","#B74146"),domain = zipcodes@data$risk.factor,na.color = NA)
,
对于那些不希望 NA 出现在他们的图例中,但仍然希望他们的 NA 值的多边形具有悬停标签和某种颜色的人,我还发现了@canovasjm 提到的 GitHub solution,它定义了两个不同的调色板,很有帮助:
pal <- colorFactor(
palette = c("#F5DCA4",na.color = "grey" # desired color for NA polygons on map
)
pal_noNA <- colorFactor(
palette = c("#F5DCA4",domain = zipcodes@data$risk.factor
na.color = NA
)
leaflet(zipcodes) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(
fillColor = ~pal(risk.factor),weight = 1,#weight of lines between zip codes
color = "gray",#color of line between zip codes
fillOpacity = .9,#fill opacity of zip codes
popup = state_popup) %>%
addLegend("bottomright",pal = pal_noNA,values = ~risk.factor,title= "Risk: Lowest to Highest",opacity = 1)