r - R中的colorRampPalette超过2个集群
问题描述
根据与点相关的概率函数,我想以模糊的方式用不同的颜色为我的点着色。
我已经处理了2个案例。首先,我正在构建我的数据集和给定 2 个集群关联的概率。
set.seed(16)
rbPal <- colorRampPalette(c('yellow','red'))
(mu1<-c(0,0)) # vector mean multinom 1
(S1<-matrix(c(0.1,0,0,0.6),2)) # var/cov matrix multinom 1
(mu2<-c(3,0)) # vector mean multino 2
(S2<- matrix(c(1,0,0,0.1),2)) # var/cov matrix multinom 2
x1<-mvrnorm(n=100, mu=mu1,Sigma=S1 )
x2<-mvrnorm(n=100, mu=mu2,Sigma=S2 )
x<-rbind(x1,x2) # Dataset
euc.dist<-function (a,b){
sqrt(sum((a-b)^2))
}
randC<-x[sample(nrow(x),2),]
Distmatrix<- t(apply(x,1,function(r) apply(randC,1, function(s) euc.dist(r,
s))))
mat<-matrix(,200,2)
mat<-apply(mat,2,function(x) x=apply(Distmatrix,1, prod))/Distmatrix
P<-t(apply(mat, 1, function(x) x/sum(x)))
D4<-data.frame(x,P)
D4$Col <- rbPal(10)[as.numeric(cut(D4$X1.1,breaks = 10))]
plot(D4$X1,D4$X2,pch = 20,col = D4$Col, cex=1.2)
points(randC, col="red")
这就是我将 2 个点想象为集群的质心的结果。
如果我想做相同的颜色工作来想象超过 2 个集群怎么办?
所以我应该有:
[...]
set.seed(50)
rbPal <- colorRampPalette(c('yellow','red',"green"))
mat<-matrix(,200,3)
randC<-x[sample(nrow(x),3),]
Distmatrix<- t(apply(x,1,function(r) apply(randC,1, function(s) euc.dist(r,
s))))
mat<-apply(mat,2,function(x) x=apply(Distmatrix,1, prod))/Distmatrix
P<-t(apply(mat, 1, function(x) x/sum(x)))
D4<-data.frame(x,P)
D4$Col <- rbPal(10)[as.numeric(cut(D4$X1.1,breaks = 10))]
plot(D4$X1,D4$X2,pch = 20,col = D4$Col, cex=1.2)
points(randC, col="red")
那是错误的,因为我希望每个质心都具有颜色的最大值,然后根据距离根据哪个集群进行着色。
解决方案
您可能需要自己执行混合功能。
如果您有两个以上的集群,那么线性颜色空间就不够用了。
最简单的选择是在每个组件中进行线性混合。直接实施。对于更高级的情况,您可能希望“平衡”点(所有距离都相等)为灰色,而不是平均颜色。
作为一种临时解决方案,您还可以为每个集群设置调色板,从灰色到集群颜色。然后使用第 i 个调色板的 (x_j-x_i)/x_j 作为值,其中 x_i 是最小的,x_j 是第二小的值。如果 x_i=x_j,则值为 0(灰色)。如果 x_i=0,则值为 1。
这可能非常漂亮,但可能会产生误导,因为它不会在任何地方使用相同的缩放比例。
推荐阅读
- substrate - 如何列出创建的节点
- excel - 如何将时间戳和用户名添加到列?
- python - Django:将 CreateView 映射到现有表单模板
- php - spatie 错误:未加载 PermissionServiceProvider(Laravel 权限)
- python - 递归函数内部发生了什么
- windows - BTH_DEVICE_INFO_LIST IOCTL 执行
- python - 如何在 jupyter notebook 中读取其他单元格
- mysql - ORA-02070 - 尝试删除带有文本的记录时
- reactjs - 如何使用 JSON Schema 创建 React Native 组件
- css - 即使在调整滑动器大小时如何保持幻灯片