我想将 choropleth r 交互式地图中 NA 值的填充颜色从白色(或透明?)更改为浅灰色。这是针对 R Shiny 应用程序的,所以我想保留plotly 的地图交互功能。我正在使用 sf 包来使用自定义形状。有人有解决方案吗?谢谢。
我这里有一个可重现的例子:
library(sf)
library(dplyr)
library(plotly)
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) %>%
mutate(NA.AREA = ifelse(AREA > 0.15, NA, AREA))
plot_ly(nc,
split = ~NAME,
color = ~NA.AREA,
colors = 'Blues',
alpha = 1,
stroke = I("#000000"),
span = I(1),
hovertext = ~NAME,
hoverinfo = "text",
showlegend = FALSE)
带有 NA 值的等值线图示例:
我看到有一种方法可以在 ggplot2 中执行此操作,但我没有看到任何有关如何在 R 的plotly 中执行此操作的文档。
我们可以
filter
NA 和非 NA 值的数据,并使用 add_sf
用所需的颜色分别绘制它们:
library(sf)
library(dplyr)
library(plotly)
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) %>%
mutate(NA.AREA = ifelse(AREA > 0.15, NA, AREA))
plot_ly() %>%
add_sf(data = nc %>% filter(!is.na(NA.AREA)),
split = ~NAME,
color = ~NA.AREA,
colors = 'Blues',
alpha = 1,
stroke = I("#000000"),
span = I(1),
hovertext = ~NAME,
hoverinfo = "text",
showlegend = FALSE) %>%
add_sf(data = nc %>% filter(is.na(NA.AREA)),
split = ~NAME,
color = I("grey"),
alpha = 1,
stroke = I("#000000"),
span = I(1),
hovertext = ~NAME,
hoverinfo = "text",
showlegend = FALSE)
创建于 2024-07-19,使用 reprex v2.0.2