gpt4 book ai didi

r - Dendextend:关于如何根据定义的组为树状图的标签着色

转载 作者:行者123 更新时间:2023-12-04 10:16:21 28 4
gpt4 key购买 nike

我正在尝试使用名为 dendextend 的出色 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色。
我已经阅读了 Stack Overflow 中的答案以及 dendextend 小插图的常见问题解答,但我仍然不确定如何实现我的目标。

假设我有一个数据框,其中第一列包含用于聚类的个人姓名,然后是几列包含要分析的因素,最后一列包含每个人的组信息(见下表) .

individual  282856  282960  283275  283503  283572  283614  284015  group
pat15612 0 0 0 0 0 0 0 g2
pat38736 0 0 0 0 0 0 0 g2
pat38740 0 0 0 0 0 1 0 g2
pat38742 0 0 0 0 0 1 0 g4
pat38743 0 0 1 0 0 1 0 g3
pat38745 0 0 1 0 1 0 0 g4
pat38750 0 0 0 1 0 1 0 g4
pat38753 0 0 0 1 0 0 0 g3
pat40120 0 0 0 0 1 0 0 g4
pat40124 0 0 0 0 1 0 0 g4
pat40125 0 0 0 0 1 1 0 g4
pat40126 0 0 0 1 0 0 0 g4
pat40137 1 0 0 0 0 0 0 g4
pat40142 0 1 0 0 0 0 0 g5
pat46903 0 0 0 0 0 1 0 g1
pat67612 1 0 0 0 1 0 0 g1
pat67621 0 0 0 0 0 0 0 g2
pat67630 0 0 1 0 0 0 0 g2
pat67634 0 0 0 0 0 0 0 g5
pat67657 0 1 0 1 0 0 0 g5
pat67680 0 0 0 0 0 1 0 g5
pat67683 0 0 1 1 0 0 0 g6

我如何根据每个人所属的组为代表每个人的分支和标签着色,即使它们可能聚集在不同的块中?

如果可以实现,有没有办法定义分配给每个组的颜色?

最佳答案

我很高兴你自己解决了这个问题。
更简单的解决方案是使用 order_value = TRUE set 中的参数功能。例如:

library(dendextend)
iris2 <- iris[,-5]
rownames(iris2) <- paste(iris[,5],iris[,5],iris[,5], rownames(iris2))
dend <- iris2 %>% dist %>% hclust %>% as.dendrogram
dend <- dend %>% set("labels_colors", as.numeric(iris[,5]), order_value = TRUE) %>%
set("labels_cex", .5)
par(mar = c(4,1,0,8))
plot(dend, horiz = T)

将导致(如您所见,标签的颜色基于 iris 数据集中的另一个变量“物种”):

enter image description here

(ps:我将一个物种出现的次数增加了两倍,以便更容易看出颜色与标签长度的关系)

关于r - Dendextend:关于如何根据定义的组为树状图的标签着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45217384/

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