如何在单张的Choropleth图中将NA值更改为NULL?

时间:2019-02-05 22:32:44

标签: r leaflet sf

我正在尝试映射具有NA值的分类变量。我希望NA值在地图上显示为透明,但它们似乎显示为黑色。

library(sf)
library(leaflet)
library(tidyverse)

demo(nc, ask = FALSE, echo = FALSE)

# Add arbitrary factor column

nc <- nc %>% 
  mutate(
    factor_col = rep(c("A", "B", "C", "D", NA),20)
  )


factpal <- colorFactor(topo.colors(4), nc$factor_col, na.color = NA)
previewColors(factpal, unique(nc$factor_col))

leaflet(nc) %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1,
              color = ~factpal(factor_col))

看来调色板是正确的

enter image description here

但是当我渲染地图时,NA值显示为黑色。

enter image description here

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

这是一种有点笨拙的方式,但是可以用。您可以为fillOpacity添加一个函数,该函数为NA的值返回0,为所有其他值返回1。

factop <- function(x) {
  ifelse(is.na(x), 0, 1)
}

leaflet(nc) %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = ~factop(factor_col),
              color = ~factpal(factor_col))