R语言层次聚类树状图不符合预期,需将品种设为叶节点
解决层次聚类树状图叶节点显示Variety因子水平的问题
嘿,我懂你现在的困扰——你做了凝聚层次聚类,画树状图的时候却没法把Variety列的因子水平显示在y轴叶节点上。其实只需要给绘图函数加个参数就能搞定,我给你具体的修改方案:
核心修改:自定义叶节点标签
plot.hclust()函数支持通过labels参数指定叶节点显示的内容,直接把你的Variety列传进去就行。修改后的完整代码如下:
library(cluster) # 计算Gower距离(你的原代码不变) dist <- daisy(cluster, metric = "gower") # 执行Ward法层次聚类(原代码不变) kaari <- hclust(dist, method = "ward.D2") # 关键:在plot时指定labels为cluster$Variety plot(kaari, cex = 0.6, hang = -1, labels = cluster$Variety)
处理重复标签的小技巧
如果你的数据里同一个Variety对应多个样本(比如搭配不同的Sample.Part),叶节点会出现重复的Variety名称。要是想区分这些样本,可以把Variety和Sample.Part组合成新标签:
# 生成组合标签,方便区分同Variety的不同样本 custom_labels <- paste(cluster$Variety, cluster$Sample.Part, sep = "_") # 使用组合标签绘图 plot(kaari, cex = 0.6, hang = -1, labels = custom_labels)
优化标签显示(可选)
如果标签太多挤在一起,除了用cex缩小字号,还可以用las参数把标签垂直旋转,避免重叠:
plot(kaari, cex = 0.6, hang = -1, labels = cluster$Variety, las = 2)
las=2会让标签垂直于坐标轴,可读性会好很多。
这样修改后,树状图的y轴叶节点就会完美显示你想要的Variety因子水平啦!
内容的提问来源于stack exchange,提问作者LEYLA_M
相关产品推荐
相关产品推荐

