r - 在R中保存用dendextend修改的树状图
问题描述
我想在树状图中旋转几个组的顺序,并设法用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)
解决方案
几点:
- 我认为没有必要使用该
dendroextras
软件包。该dendextend
软件包包括您需要的所有功能(具有更一致的 API)。 - 不需要
ggplot2
orggsave
,因为您创建的图不是 ggplot2 图,而是 R 基础 Graphics 图。因此,您可以使用诸如 png("file_loc.png"); 之类的东西来保存您的绘图。绘图函数();dev.off() - 您需要将旋转保存到树状图中
像这样:
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()
推荐阅读
- augmented-reality - 查看放置的 PNG 时 USDZ 文件的闪烁/碎片视觉效果
- nginx - Nginx:本地站点加载一段时间,然后以“找不到服务器”中止
- html - 如何在 Material Paginator 中更改 pageSizeOptions 的内容
- javascript - find the length of array using map function ES6
- java - 关闭登录maven
- html - 缩小时使文本周围的区域变大
- sql-server - Change collation of a computed column
- nginx - 同一主机上的 NGINX 多个站点
- python - 在 Databricks python notebook 中,如何导入 file1 对象与 file2 位于不同的目录中?
- html - stroke url not working in Edge and IE 11 SVG