2013-01-14 12 views
1

我想创建一个包含由plot()函数生成的四个子图的大图。 所有的小区都保存为png/pdf文件格式。 R是否有办法将这些图导入R,然后创建一个包含所有子图的大图?创建包含多个面板的R图,其中每个面板保存为.png/.pdf

+0

如果您还有用来生成原地块的代码,你可能会更好只是让与r多个面板情节和保存整个事情PNG。请参阅:http://www.statmethods.net/advgraphs/layout.html了解组合情节的一些信息。 – thelatemail

回答

1

通过创建每个绘图,将它们放在一起然后将它们保存为一个文件,从源头解决问题会不会更容易?据我所知,grid布局函数应该与基本的plot函数一起工作。这里有一个简单的例子,使用ggplot2。如果你使用ggplot你也许也可以使用facet功能。代码如下图所示。

screenshot

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() 
1

'grImport'包具有读取PDF文件的功能,转换为RGML,然后导入以在网格图形框架内使用。

'png'包有一个readPNG函数。

而且,作为themail邮件建议您是否同时创建了这些图的数据和代码,您可能要么查看layout函数,要么使用带有参数mfrow,mfcol或mfg的par

相关问题