如何在 R 中的轮廓图中更改集群名称

问题描述

我想看看一些已知标签如何解释,或者根据我从 UMAP 获得的数据调整到二维表示。

我尝试使用 silhouette 函数,但必须以数字向量形式提供集群信息,然后这些是 plot(sil) 显示的。有没有办法使用集群名称或至少在图中显示这些名称而不是数字? (与 here 类似的问题,但我想更改集群标签而不是示例标签

例如:

# run hierarchical clustering
if(!require("cluster")) { install.packages("cluster");  require("cluster") } 
tmp <- matrix(c( 0,20,40,60,100,120,30,50,80,140,0),nr=12,dimnames=list(LETTERS[1:12],LETTERS[1:12]))

cl <- hclust(as.dist(tmp,diag = TRUE,upper = TRUE),method= 'single')
cluster_labels<-cutree(cl,h=25)
#here I would like to change the cluster labels from numbers to letters,for example:
#cluster_labels<-LETTERS[1:length(unique(cluster_labels))][cluster_labels]
sil_cl <- silhouette( cluster_labels,as.dist(tmp),title=title(main = 'Good'))
plot(sil_cl)#the plot should show the cluster labels instead of the numbers

解决方法

我发现这可以使用 factoextra 包来完成。但是,如果有人找到使用常规 plot() 函数的方法

if(!require("cluster")) { install.packages("cluster");  require("cluster") } 
if(!require("factoextra")) { install.packages("factoextra");  require("factoextra") } 
tmp <- matrix(c( 0,20,40,60,100,120,30,50,80,140,0),nr=12,dimnames=list(LETTERS[1:12],LETTERS[1:12]))

cl <- hclust(as.dist(tmp,diag = TRUE,upper = TRUE),method= 'single')
cluster_labels<-cutree(cl,h=25)
sil_cl <- silhouette( cluster_labels,as.dist(tmp),title=title(main = 'Good'))
fviz_silhouette(sil_cl)+scale_fill_discrete(labels=LETTERS[1:12])+guides(col=FALSE)

enter image description here