使用多个面板准备R中的出版物质量数据

使用多个面板准备R中的出版物质量数据,r,data-visualization,ggplot2,R,Data Visualization,Ggplot2,我在以tiff格式制作300ppi绘图以供发布时遇到了一个非常具体的问题。我发现ggsave可以很好地处理单个绘图,然后可以将其导出到GIMP以压缩生成的大型tiff文件。然而,当绘制两个相邻的图形时,它似乎遇到了麻烦,例如 plot1<-ggplot(.........) plot2<-ggplot(.........) grid.arrange(plot1, plot2, ncol=2) ggsave(filename = "Figure 1.tiff", scale = 1,

我在以tiff格式制作300ppi绘图以供发布时遇到了一个非常具体的问题。我发现ggsave可以很好地处理单个绘图,然后可以将其导出到GIMP以压缩生成的大型tiff文件。然而,当绘制两个相邻的图形时,它似乎遇到了麻烦,例如

plot1<-ggplot(.........)
plot2<-ggplot(.........)
grid.arrange(plot1, plot2, ncol=2)

ggsave(filename = "Figure 1.tiff", scale = 1, width = 10, height = 5, 
       units = "cm", dpi = 300)

plot1我最近也遇到了同样的问题,我找不到现成的解决方案,最后我为ggplot对象列表创建了一个包装函数,试图在一种平衡网格上打印条目

'plotP' <- function (P){
  # P is a list of plots
  require(gridExtra)
  N <- length(P)
  Ncol <- ceiling(sqrt(N))
  Nrow <- ceiling(N/Ncol)
  grid.newpage()
  pushViewport(viewport(layout=grid.layout(Nrow, Ncol)))
  row <- 1
  col <- 1
  for (i in 1:N){
    print(P[[i]], vp=viewport(layout.pos.row=row, layout.pos.col=col)) 
    col <- col + 1
    if (col > Ncol){
      col <- 1
      row <- row + 1
    }
  }
}

“plotP”在堆栈溢出时询问此问题可能更好。
plotP(list(plot1, plot2))
name <- 'grid-of-plots'
height <- 6
width <- 8
dpi <- 300
dev.copy(tiff, paste0(name, ".tiff"), width = width*dpi, height =height*dpi)
try(dev.off(), silent = TRUE)#close window