繁体   English   中英

带有 2 个 colors 和自定义断点的自定义调色板 R leaflet - 连续变量

[英]Custom palette with 2 colors and custom breakpoints in R leaflet - continuous variable

我正在尝试为我的 leaflet map 创建具有 2 种颜色(红色和绿色)和自定义断点的自定义调色板。 目前我使用的是单一的红色调色板。 我使用colornumeric生成的 Mymap

pal2 <- colorNumeric(palette = "Reds", domain=NULL)

我在我的 leaflet 中使用它作为

leafletProxy("map", data = selecteddata()) %>% #, data = temp2.df ------ took it out/ selecteddata()
  addPolygons(data = temp2.df ,fillColor = ~pal2(selecteddata()),
              highlightOptions = highlightOptions(color = "orange", weight = 2), 
              color = "#BDBDC3",
              fillOpacity = 0.8,
              weight = 1,
              label = ~NAME                
  )

我正在寻找的是在 colors 绿色和红色中为 map 着色,而不是在绿色处中断 - +10%、+20%、+35%、+50%、+inf 红色 -10%、-20%, -35%、-50%、-inf

所需的调色板

我如何实现这一目标?

PS - 我还想在最终显示中删除 map 的未着色区域,使其看起来像第二张图像

当您想要复杂的颜色/断点时,调色板很棘手。 另一种方法是在数据中添加一个颜色列,然后自己计算适当的 RGB 值。 它需要几行额外的代码,但您可以获得更好的控制:

在此处输入图像描述

下面是一个使用所需调色板的最小示例:

library(leaflet)
library(maps)

#Load a map of the US from the 'map' package
shp_map = map("state", fill = TRUE, plot = FALSE)

#Add a made up percentage
shp_map$percentage <- sample(seq(from = -100, to = 50), length(shp_map$names))

#Define the breaks and associated RGB value
vec_breaks <- c(     -100,       -50,       -35,       -20,       -10,         0,        10,        20,        35,        55)
vec_rgb    <- c("#b51224", "#d93e22", "#f5783f", "#ffb15a", "#ffe08d", "#dae88e", "#a1cd6a", "#67ac62", "#15854c", "#005c37") 

#Add a colour column, and put in the appropriate RGB value
for (i in 1:length(shp_map$percentage)) {
    shp_map$colour[i] <- vec_rgb[min(which(vec_breaks > shp_map$percentage[i])) - 1]
}

#Draw map
leaflet(data = shp_map) %>% 
    addPolygons(fillColor = shp_map$colour, stroke = TRUE, fillOpacity = 0.8, color = "black", opacity = 1, weight = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM