我想创建一个大图,其中包含由 plot() 函数制作的四个子图。所有子图都保存为 png/pdf 文件格式。R中有没有办法将这些图导入R然后创建一个包含所有子图的大图?
问问题
2247 次
2 回答
1
'grImport' 包具有读取 pdf 文件、转换为 RGML 然后导入以在网格图形框架中使用的功能。
'png' 包有一个readPNG
功能。
并且正如 thelatemail 所建议的,如果您同时拥有创建这些图的数据和代码,您可能希望查看该layout
函数或使用par
参数 mfrow、mfcol 或 mfg。
于 2013-01-14T01:14:40.350 回答
1
通过创建每个图,将它们放在一起然后将它们保存为一个文件,从源头上解决问题不是更容易吗?据我所知,grid
布局功能应该与基本功能一起使用。plot
这是一个使用ggplot2
. 如果您使用ggplot
,您也许还可以使用方面功能。代码跟在图像之后。
library(ggplot2)
library(grid)
set.seed(23456)
mydf <- data.frame(mydate = seq(as.Date('2012-01-01'), as.Date('2012-12-01'), by = '1 month'),
run1 = runif(12, 100, 200),
run2 = runif(12, 300, 400),
run3 = runif(12, 1000, 2000),
run4 = runif(12, 2000, 3000))
p1 <- ggplot(data = mydf) +
geom_line(aes(x = mydate, y = run1))
p2 <- ggplot(data = mydf) +
geom_line(aes(x = mydate, y = run2))
p3 <- ggplot(data = mydf) +
geom_line(aes(x = mydate, y = run3))
p4 <- ggplot(data = mydf) +
geom_line(aes(x = mydate, y = run4))
png(filename = paste("multipleplot.png", sep = ""), width = 600, height = 600, units = "px", res = NA)
grid.newpage()
pushViewport(viewport(layout = grid.layout(2, 2, widths = c(300, 300))))
vplayout <- function(x, y)
viewport(layout.pos.row = x, layout.pos.col = y)
print(p1, vp = vplayout(1,1))
print(p2, vp = vplayout(1,2))
print(p3, vp = vplayout(2,1))
print(p4, vp = vplayout(2,2))
dev.off()
于 2013-01-14T01:21:23.860 回答