gpt4 book ai didi

r - 在 R 中显示树状图节点值

转载 作者:行者123 更新时间:2023-12-04 12:17:52 27 4
gpt4 key购买 nike

我正在使用 hclust 函数:

points <- data.frame(ID = c('A','B','C','D','E'), 
x = c(3,4,2.1,4,7),
y = c(6.1,2,5,6,3))
d <- dist(as.matrix(points[, 2:3]))
clusters <- hclust(d,method = "complete")
plot(clusters, labels=points$ID)

有没有办法显示连接点的值(或节点值(样本之间的差异最小))?

我希望我的情节看起来像图片上的那样。

注意:树状图上显示的值不是正确的。

Dendogram

最佳答案

我的 R 包 TBEST 有一个功能,可以为一个 hclust 对象添加两个颜色注释。为方便起见,我在下面粘贴代码,以便您可以独立于任何包使用它们。

hc2axes<-function (x) {
A <- x$merge
n <- nrow(A) + 1
x.axis <- c()
y.axis <- x$height
x.tmp <- rep(0, 2)
zz <- match(1:length(x$order), x$order)
for (i in 1:(n - 1)) {
ai <- A[i, 1]
if (ai < 0)
x.tmp[1] <- zz[-ai]
else x.tmp[1] <- x.axis[ai]
ai <- A[i, 2]
if (ai < 0)
x.tmp[2] <- zz[-ai]
else x.tmp[2] <- x.axis[ai]
x.axis[i] <- mean(x.tmp)
}
return(data.frame(x.axis = x.axis, y.axis = y.axis))
}



plot_height<-function (hc, height, col = c(2, 3), print.num = TRUE, float = 0.01, cex = NULL, font = NULL)
{
axes <- hc2axes(hc)
usr <- par()$usr
wid <- usr[4] - usr[3]
bp <- as.character(round(height,2))
rn <- as.character(1:length(height))
bp[length(bp)] <- "height"
rn[length(rn)] <- "edge #"
a <- text(x = axes[, 1], y = axes[, 2] + float * wid, bp,
col = col[1], pos = 2, offset = 0.3, cex = cex, font = font)
if (print.num) {
a <- text(x = axes[, 1], y = axes[, 2], rn, col = col[2],
pos = 4, offset = 0.3, cex = cex, font = font)
}
}

粘贴这两个函数后,添加一行来绘制树状图, plot(clusters,labels=points$ID);
cluster_height(clusters,height=clusters$height,print.num=F)

您还可以通过设置 print.num=T 绘制分支编号 enter image description here

关于r - 在 R 中显示树状图节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43642500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com