标签: dendextend

你如何比较两个树形图之间的"相似性"(在R中)?

我有两个树形图,我希望相互比较,以找出它们是如何"相似".但我不知道有任何方法可以这样做(更不用说实现它的代码了,比方说,在R中).

任何线索?

更新(2014-09-13):

自从提出这个问题以来,我编写了一个名为dendextend的R包,用于树形图的可视化,操作和比较.此软件包在CRAN上,附带详细的插图.它包括诸如cor_cophenetic,cor_bakers_gammaBk/ Bk_plot.以及tanglegram用于在视觉上比较两棵树的功能.

statistics tree r dendrogram dendextend

21
推荐指数
2
解决办法
1万
查看次数

标签和颜色叶子树状图

我正在尝试创建一个树形图,我的样本有5个组代码(作为样本名称/种类/等,但重复).

因此,我有两个问题,帮助将是伟大的:

  • 如何在叶标签中显示组代码(而不是样本编号)?

  • 我希望为每个代码组分配一种颜色并根据它对叶子标签着色(可能会发生它们不在同一个分支中,我可以找到更多信息)?

是否可以使用我的脚本执行此操作(ape或ggdendro):

sample<-read.table("C:/.../DOutput.txt", header=F, sep="")
groupCodes <- sample[,1]
sample2<-sample[,2:100] 
d <- dist(sample2, method = "euclidean")  
fit <- hclust(d, method="ward")
plot(as.phylo(fit), type="fan") 
ggdendrogram(fit, theme_dendro=FALSE)  
Run Code Online (Sandbox Code Playgroud)

随机数据框替换我的read.table:

sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=200))
groupCodes <- c(rep("A",25), rep("B",25), rep("C",25), rep("D",25)) # fixed error
sample2 <- data.frame(cbind(groupCodes), sample) 
Run Code Online (Sandbox Code Playgroud)

r dendrogram dendextend

17
推荐指数
2
解决办法
3万
查看次数

从R中的剪切树形图中提取标签成员资格/分类(即:树状图的cutree函数)

我正试图从R中的树状图中提取出一个我cut在某个高度的分类.这cutree在一个hclust对象上很容易做到,但我无法弄清楚如何在一个dendrogram对象上做到这一点.

此外,我不能只使用原始hclust中的集群,因为(令人沮丧地),类cutree的编号与类的编号不同cut.

hc <- hclust(dist(USArrests), "ave")

classification<-cutree(hc,h=70)

dend1 <- as.dendrogram(hc)
dend2 <- cut(dend1, h = 70)


str(dend2$lower[[1]]) #group 1 here is not the same as
classification[classification==1] #group 1 here
Run Code Online (Sandbox Code Playgroud)

有没有办法让分类相互映射,或者从dendrogram对象中提取较低的分支成员资格(可能有一些巧妙的使用dendrapply?),格式更像是cutree给出的?

r classification cluster-analysis dendrogram dendextend

13
推荐指数
2
解决办法
6593
查看次数

从dendextend :: circlize_dendrogram()的输出中提取簇颜色

我试图提取聚类中使用的颜色circlize_dendrogram.这是一个示例代码:

library(magrittr)
library(dendextend)

cols <- c("#009000", "#FF033E", "#CB410B", "#3B444B", "#007FFF")
dend <- iris[1:40,-5] %>% dist %>% hclust %>% as.dendrogram    

dend <- color_branches(dend, k = 5, col = cols)
dend %<>% set("labels_col", value = cols, k= 5)
dend %<>% set("labels_cex", .8)
dend %<>% set("branches_lwd", 2)

circlize_dendrogram(dend)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

以便使用提取列表簇cutree(dend, k = 5).有没有办法根据cols给定的?提取树形图中簇的颜色?我需要它来使用grid包在图中插入图例.

示例,图例:群集1 - #009000; 集群2 - #FF033E; 集群3 - #CB410B; 集群4 - #3B444B; 集群5 - #007FFF.问题circlize_dendrogram是用于群集的颜色的顺序是不同的.

虽然我可以手动执行此操作,但如果我可以自动执行此操作会很有效.如果我可以提取簇的颜色,这是可能的.

r hierarchical-clustering dendextend

10
推荐指数
2
解决办法
556
查看次数

使用dendextend在R中绘制tanglegrams子图

我正在使用dendextend在R中绘制Tanglegrams.我想知道是否有可能使用多个子图par(mfrow = c(2,2))

我似乎无法弄明白.

谢谢

library(dendextend)
dend15 <- c(1:5) %>% dist %>% hclust(method = "average") %>% as.dendrogram
dend15 <- dend15 %>% set("labels_to_char")
dend51 <- dend15 %>% set("labels", as.character(5:1)) %>% match_order_by_labels(dend15)
dends_15_51 <- dendlist(dend15, dend51)

par(mfrow = c(2,2))
tanglegram(dends_15_51)
tanglegram(dends_15_51)
tanglegram(dends_15_51)
tanglegram(dends_15_51)
Run Code Online (Sandbox Code Playgroud)

plot visualization r dendrogram dendextend

10
推荐指数
1
解决办法
905
查看次数

如何用彩色分支创建树状图?

我想在R中创建一个树状图,它有彩色分支,如下图所示. 在此输入图像描述

到目前为止,我使用以下命令创建标准树形图:

d <- dist(as.matrix(data[,29]))   # find distance matrix 
 hc <- hclust(d)                # apply hirarchical clustering 
 plot(hc,labels=data[,1], main="", xlab="") # plot the dendrogram
Run Code Online (Sandbox Code Playgroud)

我该如何修改此代码以获得所需的结果?

在此先感谢您的帮助.

r classification dendrogram dendextend

8
推荐指数
3
解决办法
1万
查看次数

树枝切割和簇周围的矩形,用于R中的水平树状图

我试图将层次聚类的结果绘制R为树状图,矩形识别聚类.

下面的代码用于垂直树形图,但对于水平树形图(horiz=TRUE),不绘制矩​​形.有没有办法对水平树形图做同样的事情.

library("cluster")
dst <- daisy(iris, metric = c("gower"), stand = FALSE)
hca <- hclust(dst, method = "average")
plot(as.dendrogram(hca), horiz = FALSE)
rect.hclust(hca, k = 3, border = "red")
Run Code Online (Sandbox Code Playgroud)

此外,我想绘制一条线来切割所需距离值的树.如何在R中绘制该cutree函数.函数返回聚类,但是也可以绘制它.

cutree(hca, k = 3)
Run Code Online (Sandbox Code Playgroud)

我正在寻找的所需输出是这样的.

树状图

如何在R中完成这项工作?

r dendrogram hclust ggdendro dendextend

8
推荐指数
2
解决办法
9345
查看次数

如何通过R中的附加因子变量为树形图的标签着色

我使用下面的代码在R中运行层次聚类分析后生成了一个树形图.我现在尝试根据另一个因子变量为标签着色,该变量保存为矢量.我实现这一目标的最接近的方法是使用包中的ColourDendrogram函数对分支进行颜色编码sparcl.如果可能的话,我更愿意对标签进行颜色编码.我在以下链接中找到了类似问题的答案在树形图中使用现有列着色分支的树形图的颜色分支,但是我还没有能够找到如何为我的目的转换示例代码.下面是一些示例数据和代码.

> dput(df)
structure(list(labs = c("a1", "a2", "a3", "a4", "a5", "a6", "a7", 
"a8", "b1", "b2", "b3", "b4", "b5", "b6", "b7"), var = c(1L, 
1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 2L), td = c(13.1, 
14.5, 16.7, 12.9, 14.9, 15.6, 13.4, 15.3, 12.8, 14.5, 14.7, 13.1, 
14.9, 15.6, 14.6), fd = c(2L, 3L, 3L, 1L, 2L, 3L, 2L, 3L, 2L, 
4L, 2L, 1L, 4L, 3L, 3L)), …
Run Code Online (Sandbox Code Playgroud)

plot r colors dendrogram dendextend

7
推荐指数
1
解决办法
2688
查看次数

How to color the branches and tick labels in the heatmap.2?

I have done a Heat Map using the function heatmap.2 of gplots in R, but I don't have an idea of how to coloring the branches and tick labels per groups (Eg. if I cut the tree to have four gruops like in my second figure). I have checked that it is possible to color the dendrogram alone using dendextend package.

Also there is a heatmap here: selecting number of leaf nodes of dendrogram in heatmap.2 in R with a …

r dendrogram heatmap gplots dendextend

6
推荐指数
2
解决办法
6071
查看次数

树形图边缘(分支)颜色匹配尖端(叶子)颜色(猿包装)

我正在尝试使用ape包中的plot.phylo命令为R中的系统发育类型图的边(线)添加颜色.这个例子是针对"粉丝"类型的情节,虽然我希望这种方法与"phylogram类型"或其他类似.

library('ape')
hc <- hclust(dist(USArrests), "ave")
plot(as.phylo(hc), type="fan")
Run Code Online (Sandbox Code Playgroud)

使用tip.color选项与cutree命令相结合,基于一组组向提示(标签)添加颜色是没有问题的.

hc.cuts <- cutree(hc, k=5)
plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts])
Run Code Online (Sandbox Code Playgroud)

edge.color选项定义边缘的颜色,但在需要许多颜色时不以logincal方式定义.

plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts], edge.color=rainbow(5)[hc.cuts])
Run Code Online (Sandbox Code Playgroud)

但是,一旦树形图的分支指定给定的组,我希望边缘匹配终端尖端颜色.在给定的示例中,朝向红色和蓝色组,第一级边缘将保持黑色(因为它朝向两组:红色和蓝色),但是超出此范围的边缘将与最终的尖端颜色相同.

我怀疑关键在于弄清楚as.phylo对象中$ edge值的排序,但我自己无法想象.谢谢.

r dendrogram phylogeny dendextend

6
推荐指数
1
解决办法
1871
查看次数