繁体   English   中英

在只有两片叶子的基础 R 中绘制树状图

[英]Plotting a dendrogram in base R with only two leaves

我有一些(旧版)代码使用基础 R(4.1.1)从n x n距离矩阵绘制树状图。 这适用于n>=3 ,但不适用于n=2

numElements <- 2

data <- matrix(1, nrow = numElements, ncol = numElements)
data[1,2] <- 0
data <- (data + t(data))/2

d3 <- as.dist(data)
clust3 <- hclust(d3)
plot(clust3, hang = -1)

对于n=2我得到这个错误:

图形错误:::plotHclust(n1, merge, height, order(x$order), hang, : 无效的树状图输入

我想要一个有两片叶子的树状图,它会显示这两片叶子之间的高度。

不幸的是, graphics:::plotHclust调用外部 C 代码,所以我不能直接修改它。 而且不幸的是,我试图在虚拟机上的预构建容器上运行它,所以我需要一个基本的 R 解决方案,而不需要额外的包(否则我只会使用ggdendro )。 我可以捕捉到只有两个样本的情况并运行单独的绘图 function,这很好。

基本树状图 plot function 无法处理克高度的单调增加,如本答案中所述。 因此,您可以使用as.dendrogram将其转换为树状图 object,如下所示:

numElements <- 2

data <- matrix(1, nrow = numElements, ncol = numElements)
data[1,2] <- 0
data <- (data + t(data))/2

d3 <- as.dist(data)
clust3 <- hclust(d3)
plot(as.dendrogram(clust3), hang = -1)

使用reprex v2.0.2创建于 2022-08-19

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM