首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R rect.hclust:树状图中的矩形过高

R rect.hclust:树状图中的矩形过高
EN

Stack Overflow用户
提问于 2019-03-17 12:47:01
回答 1查看 1.1K关注 0票数 1

我请了很多不同的专家根据它们的相似性对92个物体进行分类。基于他们的答案,我构造了一个92x92不同的矩阵。在R中,我使用以下命令检查了这个矩阵:

代码语言:javascript
复制
cluster1 <- hclust(as.dist(DISS_MATRIX), method = "average") 
plot(cluster1, cex=.55)

为了突出这些集群,我想在它们周围画长方形:

代码语言:javascript
复制
rect.hclust(cluster1, k = 3, border = "red")

结果如下:

但是,当对象有更长的名称("AAAAAAAAAAAAAAAA43“而不是"A43")时,格式化就关闭了:

代码语言:javascript
复制
rownames(DISS_MATRIX) <- paste0(rep("AAAAAAAAAAAAAAAAAAAAAAAAAAAA",92),1:92)
colnames(DISS_MATRIX) <- paste0(rep("AAAAAAAAAAAAAAAAAAAAAAAAAAAA",92),1:92)
cluster1 <- hclust(as.dist(DISS_MATRIX), method = "average") 
plot(cluster1, cex=.55)
rect.hclust(cluster1, k = 3, border = "red")

由此产生的树状图可以看出这一点。

长方形似乎已经移动到树状图的末端。不太好。我想这个故障一定是由于不同矩阵中92个物体的长名字造成的。这似乎也不是很有意义。只需确保您的对象的名称足够短。

但是,由于不同的原因,我希望我的对象有它们的原始名称(i.e.admittedly long)。此图用于表示,因此我不想使用代码。我也不想使用任何其他的软件包,因为我通常觉得hclust相当容易使用。但是,我没有找到在rect.hclust命令中定位矩形的任何方法。因此,即使对象名称很长,如何将矩形定位到树状图中呢?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-19 06:43:54

你写道:“我也不想使用任何其他的软件包,因为我通常觉得hclust相当容易使用。”

虽然hclust很适合创建分层聚类对象,但它在绘图方面不支持太多。有了hclust输出之后,最好将其更改为树状图(使用as.dendrogram)以实现可视化(因为它更适合这种情况)。没有办法做你想做的事情,不使用复杂的代码,它被打包成一个包,这是你前进的最好的途径。(我知道,因为我写了rect.dendrogram,它让大量的工作按照你想要的方式工作)。

Dendex趋向R包允许许多函数来操作和可视化树状图(请参阅这里的守护神)。具体来说,rect.dendrogram函数可以处理您询问的情况(使用长标签)。例如(为了好玩,我添加了color_branches和color_labels ):

代码语言:javascript
复制
library(dendextend)
hc <- mtcars[, c("mpg", "disp")] %>% dist %>% hclust(method = "average") 
dend <- hc %>% as.dendrogram %>% hang.dendrogram
# let's make the text longer
labels(dend)[1] <- "AAAAAAAAAAAAAAAAAAAAA"

par(mar = c(15,2,1,1))
dend %>% color_branches(k=3) %>% color_labels(k=3) %>% plot
dend %>% rect.dendrogram(k=3)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55207216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档