R:我如何根据一组值为Map上的点指定颜色?

kr98yfug  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(101)

我已经对空间数据集运行了因子分析,我想在Map上绘制结果,以便每个单独点(位置)的颜色是提取的三个因子在该位置的得分在RGB/HSV空间中的组合。
我使用基数R来绘制位置,这些位置位于使用spdep包创建的SpatialPointsDataFrame中:

图书馆

library(sp)
library(classInt)

示例数据集

fas <- structure(list(MR1 = c(-0.604222013102789, -0.589631093835467, 
                         -0.612647301042234, 2.23360319770647, -0.866779007222414), MR2 = c(-0.492209397489792, 
                                                                                            -0.216810726717787, -0.294487678489753, -0.60466348557844, 0.34752411748663
                         ), MR3 = c(-0.510065798219453, -0.61303212834454, 0.194263734935779, 
                                    0.347461766159926, -0.756375966467285), x = c(1457543.717, 1491550.224, 
                                                                                  1423185.998, 1508232.145, 1521316.942), y = c(4947666.766, 5001394.895, 
                                                                                                                                4948766.5, 4950547.862, 5003955.997)), row.names = c("Acqui Terme", 
                                                                                                                                                                                     "Alagna", "Alba", "Albera Ligure", "Albuzzano"), class = "data.frame")

创建空间对象

fas <- SpatialPointsDataFrame(fas[,4:5], fas,
                          proj4string = CRS("+init=EPSG:3003"))

绘图功能

map <- function(f) {
pal <- colorRampPalette(c("steelblue","white","tomato2"), bias = 1)
collist <- pal(10)
class <- classIntervals(f, 8, style = "jenks")
color <- findColours(class, collist)
plot(fas, pch=21,cex=.8, col="black",bg=color)
}

#example usage
#map(fas$MR1)

上面的代码可以很好地为每个因子生成一个单独的图。我想要的是一种方法来生成三个因子一起的复合图。
提前感谢您的建议。

qnzebej0

qnzebej01#

我通过this post找到了一个解决方案!上面显示的数据是这样的:

#choose columns to map to color
colors <-fas@data[,c(1:3)] 
#set range from 0 to 1
range_col <- function(x){(x-min(x))/(max(x)-min(x))}
colors_norm <- range_col(colors)
print(colors_norm)
#convert to RGB
colors_rgb <- rgb(colors_norm)
print(colors_rgb)
#plot
plot(fas, main="Color Scatterplot", bg=colors_hex, 
col="black",pch=21)

相关问题