R 中的 HDBSCAN 可视化应用文本标签而不是数字

HDBSCAN Visualization in R to apply text labels instead of numbers

我正在尝试通过 largeVis 包在 R 中 运行 HDBSCAN 算法。用于集群的可视化。我在 largeVis 中使用 gplot 函数。是否可以将图中数据点的标签从整数更改为字符串?我使用 Iris 数据集,在 "class" 列中稍作修改,并使用 "class" 列作为行 headers。是否可以在图中可视化我当前的行 headers 而不是节点编号?

x1 <- iris[,-5]
row.names(x1) <- paste0("Iris-", iris[,5], " ", 1:nrow(x1))
View(x1)

vis <- largeVis::largeVis(x1)
clustering <- largeVis::hdbscan(vis)
largeVis::gplot(clustering,t(vis$coords), text = TRUE)

函数本身没有一个简单的选项来绘制行名,它确实 return 一个 ggplot 对象,您可以向其添加额外的图层。以下是如何使用 rownames

绘图
library(ggplot2)
pp <- largeVis::gplot(clustering,t(vis$coords), text = FALSE) + 
  geom_label(aes(label=rownames(x1)[label+1]), size=2.5, label.size=0.1, alpha=0.7)

它在内部构建一个 data.frame 并为每个节点编制索引(出于某些非 R 类原因)0。我们可以使用该索引来查找该观察的行名并将其用作标签。在这里,我保留了基本函数中默认选项使用的大部分样式。