如何用ggtree绘制带Jaccard系数百分比高度刻度的UPGMA树?
解决ggtree绘制UPGMA树刻度不符问题
问题原因
ggtree处理hclust对象时默认会对树的高度做标准化缩放,而fviz_dend直接使用了hclust中存储的原始Jaccard不相似度百分比数值(即你乘以100后的结果),因此两者刻度出现差异。
解决方案
要让ggtree显示正确的Jaccard不相似度百分比刻度,需手动保留并调用hclust对象中的原始高度值,具体操作如下:
1. 转换hclust对象并保留原始高度
# 将hclust对象转为phylo格式 hc_phylo <- as.phylo(afu_clin.hc) # 手动指定edge.length为hclust中的原始高度(即Jaccard不相似度百分比) hc_phylo$edge.length <- afu_clin.hc$height
2. 用ggtree绘制并配置坐标轴刻度
library(ggtree) # 绘制树状图并设置正确刻度 hc_tree <- ggtree(hc_phylo, size = 0.8) + geom_tiplab(angle = 90, hjust = 1, offset = -0.05) + layout_dendrogram() + theme_dendrogram() + # 根据你的数据范围设置x轴刻度间隔,这里以10为步长示例 scale_x_continuous(breaks = seq(0, max(afu_clin.hc$height), by = 10)) print(hc_tree)
水平树适配(与fviz_dend的horiz=TRUE效果一致)
如果需要水平方向的树状图,可在layout_dendrogram()中添加方向参数:
layout_dendrogram(direction = "right")
内容的提问来源于stack exchange,提问作者DarynaP
相关产品推荐
相关产品推荐

