R语言层次聚类分析时如何修改聚类树图的标签值?
问题原因
你遇到的标签显示异常由两个常见操作问题导致:
- 将
Station列转为因子后直接赋值行名,R会默认读取因子底层的整数编码而非展示的文本标签 - 删除
Station列后只剩1列数值数据,R会隐式将单列数据框转为向量,丢失行名属性
解决方案
两种修改思路按需选择即可:
方案1:省去不必要的因子转换步骤
层次聚类分析不需要将站点列转为因子,直接用原始字符值赋值行名即可,完整修正代码如下:
# 原始数据构造 data = structure(list(Station = c("1A", "1B", "2A", "2B", "3A", "3B", "4A", "4B", "5A", "5B", "6A", "6B", "7A", "7B"), Particles.kg = c(370L, 420L, 250L, 320L, 130L, 210L, 290L, 390L, 230L, 340L, 60L, 90L, 130L, 170L)), class = "data.frame", row.names = c(NA, -14L)) # 直接用字符型站点名赋值行名 rownames(data) = data$Station # 加drop=FALSE避免单列数据转为向量丢失行名 data = data[,-1, drop=FALSE] require(stats) res.dist = dist(x=data, method = "euclidean") hcl = hclust(d=res.dist, method = "complete") plot(x=hcl, hang = -1, cex = 0.6)
方案2:保留因子类型的修改方式
如果其他分析逻辑需要Station为因子类型,赋值行名时先做一次字符转换即可:
data$Station = as.factor(data$Station) # 因子转字符后再赋值行名 rownames(data) = as.character(data$Station) data = data[,-1, drop=FALSE] # 后续聚类代码和原逻辑一致即可
内容的提问来源于stack exchange,提问作者Kazi
相关产品推荐
相关产品推荐

