【问题标题】:Saving dendrograms modified with dendextend in R在R中保存用dendextend修改的树状图
【发布时间】:2021-08-11 00:26:47
【问题描述】:

我想在树状图中旋转几个组的顺序,并设法使用dendextend 做到这一点。但是,当我尝试使用 ggsave 保存绘图时,我最终得到了未旋转的原始树状图。有没有办法用ggplot2保存旋转的树状图?我的代码如下:

library(dendroextras)        
library(ggplot2)        
library(dendextend)        
d_copy_n <- colour_clusters(hc_test, k=6, groupLabels = as.roman)  
labels(d_copy_n)<-with(nl2[labels(d_copy_n)], Cell_type)   
d_copy_n <- set(d_copy_n, "labels_cex", 1)  
d_copy_n <- set(d_copy_n, "branches_lwd", 3)  
par(mar=c(0,2,0,0))  
d_copy_n %>%  
    rotate(121:86) %>%  
    plot()  
par(mar=c(0,2,0,0))      
ggsave("dendr_test.png", plot = plot(d_copy_n, cex.axis = 1, cex = 1), width = 21, height =7, units = "in", dpi = 300)
  

我想要的情节是这样的: 旋转树状图



我得到的情节如下所示: 未旋转的树状图

【问题讨论】:

    标签: r ggplot2 dendrogram dendextend ggsave


    【解决方案1】:

    几点:

    1. 我认为没有必要使用dendroextras 包。 dendextend 包包含您需要的所有功能(具有更一致的 API)。
    2. 不需要ggplot2ggsave,因为您创建的图不是ggplot2 图,而是R 基础图形图。因此,您可以使用诸如 png("file_loc.png"); 之类的东西来保存您的绘图。绘图函数(); dev.off()
    3. 您需要将旋转保存到树状图中

    像这样:

    d_copy_n <- d_copy_n %>%  
        rotate(121:86)
    

    现在这部分应该可以正常工作了:

    ggsave("dendr_test.png", plot = plot(d_copy_n, ...
    

    这是一个简单的例子,说明你在没有通过 ggplot2 和 dendroextras 的情况下提出的问题

    library(dendextend)        
    dend <- USArrests %>%
      dist() %>%
      hclust(method = "ave") %>%
      as.dendrogram()
    d_copy_n <- color_branches(dend, k=6)  
    d_copy_n <- set(d_copy_n, "labels_cex", 1)  
    d_copy_n <- set(d_copy_n, "branches_lwd", 3)  
    d_copy_n <- d_copy_n %>%  
      rotate(50:1)    
    
    # or just use:
    # d_copy_n <- color_branches(dend, k=6)  %>% 
    #          set("labels_cex", 1)  %>% 
    #          set("branches_lwd", 3)  %>% 
    #          rotate(50:1)  
    
    png("dend_plot.png")
    d_copy_n %>%  
      plot()  
    dev.off()
    

    【讨论】:

    • 非常感谢!你为我节省了很多时间,我学到了一些新东西。非常感谢!!!
    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多