r - R 中的 colorRampPalette 超过 2 个簇

标签 r colors cluster-analysis

我想根据与点相关的概率函数,以模糊的方式用不同的颜色为我的点着色。

我已经处理了两个案例。首先,我正在构建数据集以及与给定 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")

Ex

这就是我想象的 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")

enter image description here

这是错误的,因为我希望每个质心具有颜色的最大值,然后根据距离(取决于哪个簇)进行着色。

最佳答案

您可能需要自己执行混合功能。

如果您有两个以上的簇,线性颜色空间就不够了。

最简单的选择是对每个组件进行线性混合。直接实现。对于更高级的情况,您可能希望“平衡”点(所有距离都相等)为灰色,而不是平均颜色。

作为临时解决方案,您还可以为每个集群设置调色板,从灰色到集群颜色。然后使用第i个调色板的(x_j-x_i)/x_j作为值,其中x_i是最小的,x_j是第二小的值。如果 x_i=x_j,则该值为 0(灰色)。如果x_i=0,则值为1。

这可能相当漂亮,但可能会产生误导,因为它并不在所有地方使用相同的缩放比例。

关于r - R 中的 colorRampPalette 超过 2 个簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51000787/

相关文章:

python - Python中基于字符串/整数序列的聚类和距离/相异矩阵

r - 在 igraph 中创建加权边而不是多个单一连接

r - 使用VBA在excel中融化/ reshape ?

regex - 如何识别给定的字符串是十六进制颜色格式

r - 无法为签名 ‘species’ 字符找到函数 ‘"的继承方法"’

scikit-learn - 使用 kmeans 计算簇质心

r - 不相容数组的突变

R数据按顺序清理

android - 纹理和颜色在 OpenGL ES 中显示不正确

assembly - 如何更改程序集中当前光标位置的背景颜色