在 R 中保存用 dendextend 修改的树状图
Saving dendrograms modified with dendextend in R
我想旋转树状图中几个组的顺序,并设法用 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
或 ggsave
,因为您创建的图不是 ggplot2 图,而是 R 基础图形图。因此,您可以使用 png("file_loc.png"); 之类的东西保存您的情节。 plotting_functions(); 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()
我想旋转树状图中几个组的顺序,并设法用 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
或ggsave
,因为您创建的图不是 ggplot2 图,而是 R 基础图形图。因此,您可以使用 png("file_loc.png"); 之类的东西保存您的情节。 plotting_functions(); 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()