如何为R中读取的Shapefile多边形分配预设RGB颜色值
解决方法
问题出在你直接把列名字符串传给了rgb()函数,它没法识别数据框里的列值。得先把每一行的RGB数值转换成对应的颜色代码,再用这个代码来着色。
步骤如下:
- 先给你的空间数据框新增一列,比如叫
fill_color,用rgb()函数把每行的RED、GREEN、BLUE值转换成颜色字符串。注意RGB值如果是0-255的整数,要除以255转成0-1的范围(这是rgb()函数要求的输入范围):
YGS_GLGY$fill_color <- rgb(red = YGS_GLGY$RED/255, green = YGS_GLGY$GREEN/255, blue = YGS_GLGY$BLUE/255)
- 然后在
tmap里调用tm_polygons时,指定fill为这个新列,同时设置palette = NULL,这样tmap就会直接使用我们生成的颜色,不会自动生成调色板:
tm_shape(YGS_GLGY) + tm_polygons(fill = "fill_color", palette = NULL) + tm_borders()
如果你的RGB值本来就是0-1的小数,那就不用除以255,直接用就行。
内容的提问来源于stack exchange,提问作者Kirsten Rasmussen
相关产品推荐
相关产品推荐

