我有一个特定的问题,即以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)
这导致只有plot2出现在生成的tiff文件中,而情节1无处可见。
我还有一个不使用ggplot的图,但是由barplot2和matplot生成的三个图组成,但可能这也面临着类似的问题。从本质上讲,任何人都可以建议一种方法,将出现在绘图窗口中的绘图(我使用RStudio)中出现的内容翻译成高分辨率的tiff文件,尽可能少做文章吗?
答案 0 :(得分:0)
我最近有同样的问题,我找不到现成的解决方案,我最终为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(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
希望它有所帮助,
亲切的问候