【问题标题】:Adding table rows to labels of dendrogram将表格行添加到树状图的标签
【发布时间】:2019-01-30 03:20:11
【问题描述】:

我实际上是在尝试将树形图的标签更改为表中的相应行。例如,考虑 USArrest 数据集。

现在树状图上的标签只是州名、“阿拉巴马州”等。但是查看数据表,alabama 的行是这样的

        Murder Assault UrbanPop Rape
Alabama   13.2     236       58 21.2

因此,我希望不只是将“Alabama”作为标签,而是将这一整行:Alabama 13.2 236 58 21.2 等等用于树状图的所有其他标签。

我的代码如下所示:

library("ggplot2")
library("ggdendro")
library(dendextend)
data(USArrests)

dend <- USArrests %>%  scale %>% 
dist %>% hclust %>% as.dendrogram
dend %>% plot
dend %>% set("labels_cex", 0.8) %>% # Change size
plot(main = "Dendrogram") # plot

我尝试将树状图减少到只有两个 rbanches 以使我更轻松。所以假设我正在使用dend &lt;- USArrests[1:2,] %&gt;% scale %&gt;%

我尝试过这样的事情:

alabama_label <- USArrests[1,]
alaska_label <- USArrests[2,]
dend %>% set("labels", c(alabama_label, alaska_label))

但这没有用。它只给了我来自 USArrests[1,1]USArrests[2,1] 的值作为标签。

所以我只是想知道,我怎么可能用所有行标记树状图?

【问题讨论】:

    标签: r dendrogram hclust dendextend


    【解决方案1】:

    你去吧:

    # library("ggplot2")
    ## library("ggdendro") ## this package is not relevant for your question. (and in general it is mostly deprecated compared with the features from dendextend)
    
    
    library(dendextend)
    data(USArrests)
    
    dend <- USArrests %>%  scale %>% 
            dist %>% hclust %>% as.dendrogram %>% 
            set("labels_cex", 0.75) # Change size
    
    USArrests_dend_order <- USArrests[order.dendrogram(dend), ]
    new_labels <- paste(rownames(USArrests_dend_order), apply(USArrests_dend_order,1,paste,collapse="_"))
    
    dend2 <- dend
    labels(dend2) <- new_labels # the labels assignment function is from dendextend
    
    
    par(mfrow = c(1,2), mar = c(2,0,0,4))
    plot(dend, horiz = T)
    par(mar = c(2,0,0,10))
    plot(dend2, horiz = T)
    

    输出返回带有正确标签的树状图,其中包含您想要添加的内容:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 2016-12-08
      • 2020-09-09
      • 1970-01-01
      • 2019-08-10
      • 2017-08-08
      相关资源
      最近更新 更多