如何为R中hclust包生成的树状图设置关联环境信息的样本标签
如何为R中hclust包生成的树状图设置关联环境信息的样本标签
嗨,我完全懂你的需求——把第一列的样本名和第二列的环境信息绑定起来,作为树状图的标签对吧?这个操作其实很容易实现,咱们直接看修改后的方案:
首先要注意一个关键点:计算距离矩阵的时候,一定要排除样本名和环境信息这两列,因为dist()函数只能处理数值型数据,把字符列放进去会报错。接下来咱们一步步调整代码:
- 先生成组合标签:把样本名和环境信息用你喜欢的分隔符连起来,比如用
-或者|都可以:
# 从mydata中提取第一列(样本名)和第二列(环境),组合成新标签 combined_labels <- paste(mydata[, 1], mydata[, 2], sep = " - ")
- 把这个新标签赋值给聚类结果
fit的labels属性:
fit$labels <- combined_labels
- 最后调整绘图参数并绘制树状图,这里可以适当调大左边的边距(
mar参数的第二个值),避免长标签被截断:
整合后的完整代码如下:
# 计算距离矩阵:排除前两列非数值数据 d <- dist(mydata[, -c(1, 2)], method = "euclidean") fit <- hclust(d, method="ward.D") # 生成带环境信息的组合标签 fit$labels <- paste(mydata[,1], mydata[,2], sep = " - ") # 调整绘图参数:cex控制字体大小,mar调整边距(左边界留足够空间放标签) par(cex=0.4, mar=c(5, 9, 4, 1)) plot(fit, main = "样本聚类树状图(含环境信息)")
如果你的mydata行名本来就是样本名,那也可以用rownames(mydata)代替mydata[,1],效果是一样的。另外如果想给不同环境的标签加颜色,可以后续用text()函数手动设置,但基础的标签组合需求上面的代码就完全能满足啦。
备注:内容来源于stack exchange,提问作者Luca Bonfiglioli
相关产品推荐
相关产品推荐

