R:图:在一个A4 pdf页面上正确拟合多个图

时间:2015-10-26 11:19:23

标签: r pdf plot

我有一个多图,我想在A4 pdf页面上打印,以便图表填满整个页面。当我使用下面的代码时,我在图表上方和下方有很多空白区域。如何将此空白区域缩小到约1厘米并增加图表高度?谢谢你的帮助。

group <- "Title"
layout(matrix(c(1:12), 6, 2) )
par(mar = c(0, 4.1, 1.5, 2.1),oma = c(2, 0, 2, 0)) 
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)

mtext(group, outer = TRUE, cex = 1.5)
mtext("text", outer = TRUE,side =1)
dev.print(pdf, file="charts12.pdf" ,onefile=T,paper='A4') 

2 个答案:

答案 0 :(得分:4)

dev.print更改为简单pdf,您可以指定设备的widthheight。使用的单位是英寸,所以A4是8.27“X 11.69”。我在下面添加了一个例子。在这个例子中,我不得不调整图表周围的上边距。

data("mtcars")
pdf("test.pdf", width = 8.27, height = 11.69)
group <- "Title"
layout(matrix(c(1:12), 6, 2) )
par(mar = c(0, 4.1,2.5, 2.1),oma = c(2, 0, 2, 0))
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
plot(mtcars$mpg ~ mtcars$hp)
mtext(group, outer = TRUE, cex = 1.5)
mtext("text", outer = TRUE,side =1)
dev.off()

答案 1 :(得分:2)

dev.print“将当前设备的图形内容复制到新设备”(来自?dev.pront),这意味着输出图形的比例取决于源设备的缩放方式。调整绘图窗口的大小会影响您获得的空白量。

如果您另外指定widthheight,则可以将绘图拟合到A4,使结果与绘图窗口无关。

dev.print(pdf, file="charts12.pdf" ,onefile=T,paper='A4', width = 21/2.54, height = 29.7/2.54) 

我将widthheight除以2.54,将厘米转换为英寸。

在@ amwill04的答案中使用pdf()dev.off()也有效,但缺点是在将图写入文件之前图。虽然这与生产代码无关,但它可以使编写生成图表的代码更容易,因为只需source代码就可以生成图表的预览。