如何基于数据列十六进制色值为mapview设置多边形/点颜色?
解决mapview基于已有颜色列设置要素颜色的问题
- 核心思路:你已经为每个要素生成了对应的十六进制颜色值,不需要通过
zcol(数值变量映射颜色)或col.regions(调色板)的常规映射逻辑,直接将颜色列的向量传入对应颜色参数即可。 - 分要素类型处理:
- 点要素:使用
col参数传入颜色向量 - 多边形要素:使用
col.regions参数传入颜色向量(若需要设置边框颜色,额外用col参数)
- 点要素:使用
示例代码
多边形图层(你的场景)
# 直接将已生成的clrs列向量传给col.regions,设置填充色 mapview(breweries, col.regions = breweries$clrs, col = "black") # col参数可选,用于设置多边形边框颜色
处理NA值(如果颜色列存在缺失)
如果clrs列有NA值,可通过na.color指定缺失值对应的颜色:
mapview(breweries, col.regions = breweries$clrs, na.color = "gray50", col = "black")
为什么之前的方法无效?
zcol是用来指定数值型列,让mapview自动用col.regions的调色板对该数值进行颜色映射;而你已经提前生成了每个要素的具体颜色值,不需要这个映射步骤,直接传入颜色向量就能覆盖自动映射逻辑。
内容的提问来源于stack exchange,提问作者N R
相关产品推荐
相关产品推荐

