【问题标题】:R hclust: common order for multiple treesR hclust:多棵树的公共顺序
【发布时间】:2019-02-26 00:37:21
【问题描述】:

我正在使用 hclust 制作树。我在一个公共集合上定义了几个距离。我想尽可能接近地找到每个距离的集合的共同顺序,而图中没有任何交叉边缘。例如,在本例中,我希望两棵树的左侧都有 1 到 5 片叶子。

x<-seq(1,10)
y<-c(1.3,2.4,3.6,4.9,5.2,6.9,7.9,8.7,9.6,10.1)
X<-hclust(dist(x))
Y<-hclust(dist(y))
par(mfrow=c(2,1))
plot(X)
plot(Y)

一般来说,如果存在的话,是否有一种算法可以找到这个顺序?或者,至少为每个接近其他距离的距离找到一个顺序?我知道这可以通过使用顺序或排序的树状图来完成,但我认为这些树的信息量较少。

Plots as hclust

Plots as dendrograms

【问题讨论】:

    标签: r hierarchical-clustering hclust


    【解决方案1】:

    您可以使用 dendextend 库中的 sort 函数:

    library(dendextend)
    
    x<-seq(1,10)
    y<-c(1.3,2.4,3.6,4.9,5.2,6.9,7.9,8.7,9.6,10.1)
    X<-hclust(dist(x)) %>% as.dendrogram %>% sort %>% as.hclust
    Y<-hclust(dist(y)) %>% as.dendrogram %>% sort %>% as.hclust
    par(mfrow=c(2,1))
    plot( X )
    plot( Y )
    

    该函数只是尝试按每个叶子的索引对图进行排序。

    【讨论】:

    • 我想将其保留为 hclust 类而不是树状图。 hclust 的绘图功能使阅读高度和直观地了解分支变得更加容易。我不觉得树状图那么好。我更新了帖子以澄清原因。
    • @FScott 您可以在 hclust 和 dendrogram 之间来回转换。我认为您这样做不会丢失信息,请参阅更新后的答案。
    • 您可以使用hang.dendrogram 函数来更好地绘制树状图(也在dendextend 中)。还要看tanglegram函数。
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2021-12-26
    • 1970-01-01
    • 2010-12-11
    • 2021-01-14
    • 2014-09-24
    • 2010-10-15
    • 2011-10-04
    相关资源
    最近更新 更多