gpt4 book ai didi

R:在一页上打印多种类型的图

转载 作者:行者123 更新时间:2023-12-01 11:29:45 25 4
gpt4 key购买 nike

我正在尝试在一页中绘制多个图。我知道像 gridExtra::grid.arrange 这样的函数可以绘制由 ggplot2 包生成的图形。我面临的问题是我有两个图(下面的 bar.plotdensity.plot)由 ggplot2 包生成,一个使用 limma::vennDiagram 函数生成的图。我已经尝试了以下但它不起作用:

output <- paste('summary.pdf')
pdf(output,width = 25,height = 20)
par(mfrow = c(3, 3))
plot(bar.plot)
plot(density.plot)
print(vennDiagram(dat.venn, circle.col = col,cex = c(3,3,3)))
invisible(dev.off())

dat.venn 是 VennCounts 类型的数据:

 I-H-10003-T1-D1 I-H-10003-T2-D1 I-H-10003-T3-D1 Counts
0 0 0 0
0 0 1 41
0 1 0 81
0 1 1 66
1 0 0 10
1 0 1 2
1 1 0 4
1 1 1 56
attr(,"class")
[1] "VennCounts"

我找不到与 grid.arrange 函数兼容的维恩图包。我不认为 VennCounts 不能用 grid.arrange 函数打印出来,ggplot2 图可以用 par< 打印出来 函数。

更新:我尝试使用 pushViewport,但它仍在下一页打印维恩图:

pdf(output,width = 25,height = 20)

# Create layout : nrow = 2, ncol = 2
pushViewport(viewport(layout = grid.layout(2, 2)))

# A helper function to define a region on the layout
define_region <- function(row, col){
viewport(layout.pos.row = row, layout.pos.col = col)
}

# Arrange the plots
print(bar.plot, vp = define_region(1, 1:2))
print(density.plot, vp = define_region(2, 1))
print(vennDiagram(dat.venn, circle.col = col,cex = c(3,3,3)), vp = define_region(2, 2))
dev.off()

如有任何帮助,我们将不胜感激!

最佳答案

首先,将每个文件保存为.png 文件,例如save(yourfile, file = "yourname.png") .

其次,使用grid包的read.PNG函数加载它们,比如yours.png <- readPNG("yourfile.PNG")

之后,使用 rasterGrob 函数转换它们,如 g1 <- rasterGrob(yours.png, interpolate=TRUE) .

一旦所有图在格式上都具有可比性,grid.arrange()做的伎俩。它可能看起来像这样:

grid.arrange(g1, g2, g3, nrow=1)  # one row
dev.copy(png,'threeplots.png') # to save the array of plots
dev.off() # to close the device

关于R:在一页上打印多种类型的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com