为传单定义调色板中断

时间:2017-08-19 20:59:22

标签: r leaflet

有没有办法根据变量的特定范围定义调色板中断? 以连续变量x为例,范围从0到1。我将palette定义为:

palette <- colorNumeric(palette = rev("RdYlGn"), domain = NULL, na.color = NA)

并在相应的传单函数中,我将color定义为:

color = ~palette(x)

这会返回漂亮的地图,但是,断点是在相等的空间定义的:0.0,0.2,0.4,...,1.0

相反,我将休息定义为:

df@data$x_brks <- cut(x, 
                  breaks=c(0, 0.55, 0.65, 0.75, 0.85, 0.95, 1.0), 
                  labels=c("<=0.55", ">0.55 and <=0.65", ">0.65 and <=0.75", 
                           ">0.75 and <= 0.85", ">0.85 and <=0.95", ">0.95")
                     )

并希望保持相同的调色板(最低范围为红色,最高范围为绿色)。我正在绘制多个图层,我希望为所有图层保持相同的比例。

我无法在Leaflet的x_brks函数中传递这个新变量color = ~palette(x_brks) - 我收到此错误:Error in Summary.factor(c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 5L, : ‘range’ not meaningful for factors

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试使用colorBin

risk.bins <-c(0, 0.55, 0.65, 0.75, 0.85, 0.95, 1.0), 
risk.pal <- colorBin( "plasma", bins=risk.bins, na.color = "#aaff56")

然后在传单函数中

   color = ~ risk.pal(value),

可以通过按原样插入文本在addLegend中手动设置标签

labels=c("<=0.55", ">0.55 and <=0.65", ">0.65 and <=0.75", 
                       ">0.75 and <= 0.85", ">0.85 and <=0.95", ">0.95")