非常感谢您对以下问题的帮助。我知道几种将单个图保存到文件的方法。我的问题是:如何正确地将多图保存到文件中?
首先,我不是一个有经验的 R 用户。我使用 ggplot2 来创建我的绘图,我可能应该提到的另一件事是我使用 RStudio GUI。使用 R Cookbook 中的示例 ,我可以在一个窗口中创建多个绘图。
我想将这个所谓的多图保存到一个文件中(最好是 jpeg),但不知何故未能做到这一点。
我正在创建多图如下:
##define multiplot function
multiplot <- function(..., plotlist=NULL, cols) {
require(grid)
# Make a list from the ... arguments and plotlist
plots <- c(list(...), plotlist)
numPlots = length(plots)
# Make the panel
plotCols = cols # Number of columns of plots
plotRows = ceiling(numPlots/plotCols) # Number of rows needed, calculated from # of cols
# Set up the page
grid.newpage()
pushViewport(viewport(layout = grid.layout(plotRows, plotCols)))
vplayout <- function(x, y)
viewport(layout.pos.row = x, layout.pos.col = y)
# Make each plot, in the correct location
for (i in 1:numPlots) {
curRow = ceiling(i/plotCols)
curCol = (i-1) %% plotCols + 1
print(plots[[i]], vp = vplayout(curRow, curCol ))
}
}
## define subplots (short example here, I specified some more aesthetics in my script)
plot1a <- qplot(variable1,variable2,data=Mydataframe1)
plot1b <- qplot(variable1,variable3,data=Mydataframe1)
plot1c <- qplot(variable1,variable2,data=Mydataframe2)
plot1d <- qplot(variable1,variable3,data=Mydataframe2)
## plot in one frame
Myplot <- multiplot(plot1a,plot1b,plot1c,plot1d, cols=2)
这给出了期望的结果。当我尝试保存到文件时出现问题。我可以在 RStudio 中手动执行此操作(使用导出 -> 将绘图另存为图像),但我想在脚本中运行所有内容。我设法只保存 subplot1d(即 last_plot()),而不是完整的多图。
到目前为止我已经尝试过:
使用 ggsave
ggsave(filename = "D:/R/plots/Myplots.jpg")
这导致仅保存子图 1d。
使用 jpeg()、print() 和 dev.off()
jpeg(filename = "Myplot.jpg", pointsize =12, quality = 200, bg = "white", res = NA, restoreConsole = TRUE) print(Myplot) dev.off()
这会产生一个完全白色的图像(只是我假设的背景)。print(Myplot) 返回 NULL。
不知道我在这里做错了什么。我对 R 缺乏理解是我一直在寻找解决方案的原因。谁能解释我做错了什么,也许可以提出解决我问题的方法?