使用 grid_draw 方法而不是 gridExtra 保存绘图

Saving plots using grid_draw method instead of gridExtra

我已经使用 gridExtra 创建了 2 个彼此相邻的图,我可以使用 ggsave

保存对象

但是,gridExtra 中的绘图未对齐,所以我使用了这种方法

 #Method 2 - gtable
 require(gtable)
 #Extract Grobs
 g1<-ggplotGrob(left)
 g2<-ggplotGrob(right)
 #Bind the tables
  g<-gtable:::cbind_gtable(g1, g2, "first")
 #Remove a row between the plots
 g <- gtable_add_cols(g, unit(-1,"cm"), pos=ncol(g1))
 #draw
 grid.newpage()
 grid.draw(g)

此方法包含在本 link

The perils of aligning plots in ggplot

它对我的图表效果很好,但是当我保存

object <- grid.draw(g)

当我试图查看它时对象为 NULL,我不确定如何将它保存为 png

gridExtra方法可以保存为一个对象,使用

保存
ggsave('g.png',width=6,height=4,dpi=600)

如何保存 grid.draw 输出?我尝试使用 Rstudio UI 保存它,但它只保存了一个情节,而不是彼此相邻

忘了说 png ( ) 的宽度和高度将取决于您的情节,所以请尝试一下。

gtable对象是这样保存的:

根据情节,可以调整 png 的尺寸以适合情节

png("g.png",width = 1000, height = 600, units = "px") 
grid.draw(g) 
dev.off()

这应该有效。

png("g.png", plot=grod.draw(g), width = 1000, height = 600, units = "px")
dev.off()
ggsave('g.png', plot = g, width=6,height=4,dpi=600)