簡體   English   中英

在 R 中保存使用 dendextend 修改的樹狀圖

[英]Saving dendrograms modified with dendextend in R

我想在樹狀圖中旋轉幾個組的順序,並設法用dendextend 做到這一點。 但是,當我嘗試使用 ggsave 保存 plot 時,我最終得到了未旋轉的原始樹狀圖。 有沒有辦法用 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)
  

我想要的 plot 看起來像這樣: 在此處輸入圖像描述 旋轉樹狀圖



我得到的 plot 看起來像這樣: 在此處輸入圖像描述 未旋轉的樹狀圖

幾點:

  1. 我認為不需要使用dendroextras package。 dendextend package 包含您需要的所有功能(具有更一致的 API)。
  2. No need for ggplot2 or ggsave , since the plot you're creating is not a ggplot2 plot, but rather an R base Graphics plot. 因此,您可以使用類似 png("file_loc.png"); 的方式保存 plot; 繪圖函數(); 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()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM