首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于数据帧中列的树状图的颜色分支

基于数据帧中列的树状图的颜色分支
EN

Stack Overflow用户
提问于 2019-04-18 05:51:12
回答 1查看 330关注 0票数 2

我希望根据hclust函数中使用的数据帧的列中的值为树状图的分支着色。

在您将此问题标记为重复之前,请参阅链接到此question的此question。请注意,这实际上从未在答案中完全解决。根据树状图的拓扑对分支进行着色很容易,但是我不知道如何根据hclust函数中使用的数据帧中的列对分支进行着色。

我尝试过以两种非常相似的方式使用dendextend包:

代码语言:javascript
复制
library(dendextend)
代码语言:javascript
复制
par(mar = c(2,1,0,8)) #make sure the whole plot is on the page
hc <- hclust(dist(mtcars)) #cluster dataframe based on distance
dend <- as.dendrogram(hc) #use dendextend to create dendrogram
dend2 <- color_branches(dend, col = mtcars$cyl) #attempt but fail at coloring branches
plot (dend2, horiz = TRUE) #plot dendrogram

代码语言:javascript
复制
dend3 <- assign_values_to_leaves_edgePar(dend, value = mtcars$cyl, edgePar = "col") #attempt but fail at coloring branches
plot (dend3, horiz = TRUE) #plot dendrogram

factor(mtcars$cyl替换mtcars$cyl也不能解决这个问题。

这两种解决方案都会产生颜色不正确的树状图。

它似乎是根据cyl列中的值的顺序从树形图的底部到顶部对颜色进行排序,但由于分支不再按该顺序排列,因此着色没有任何意义。作为解决这个问题的一种方法,我不希望对数据帧进行排序。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-18 06:07:57

你需要按照树状图中树叶的顺序排列颜色。您可以使用labels()提取叶子上使用的名称

代码语言:javascript
复制
dend2 <- color_branches(dend, col=mtcars[labels(dend),"cyl"])

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

https://stackoverflow.com/questions/55736471

复制
相关文章

相似问题

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