如何更改 fviz_silhouette 中的图例?

How can I change the legend in fviz_silhouette?

我正在尝试使用名为 "factoextra" 的 R 库生成一些剪影。 不幸的是,我遇到了一个问题。 让我们看一下以下使用 "iris" 数据集的示例。

library(factoextra)
library(cluster)
set.seed(123)
data("iris")
iris.scaled <- scale(iris[, -5])
# K-means clustering

km.res <- kmeans(iris.scaled, 3, nstart = 2)
# Visualize silhouhette information
sil <- silhouette(km.res$cluster, dist(iris.scaled))
fviz_silhouette(sil)+
  scale_fill_discrete(labels=c("a","b","c"))

我尝试添加特定的图例 "a"、"b"、"c"。

如您所见,图例重复,显示 "a"、"b"、"c",然后是“1”、“2”、“3”。有没有办法只显示 "a","b","c"?

您可以简单地删除 color 指南:

sil <- silhouette(km.res$cluster, dist(iris.scaled))
fviz_silhouette(sil)+
  scale_fill_discrete(labels=c("a","b","c"))+
  guides(col=FALSE)

如果您查看源代码,您可以看到控制映射的这一行:

mapping <- aes_string(x = "name", y = "sil_width", 
        color = "cluster", fill = "cluster")

设置离散填充并移除颜色会产生预期的绘图。

结果: