如何在 R Plotly 等值线地图中显示 NA 值的自定义颜色?

问题描述 投票:0回答:1

我想将 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 中执行此操作的文档。

r colors plotly maps choropleth
1个回答
0
投票

我们可以

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

© www.soinside.com 2019 - 2024. All rights reserved.