我试图制作大量情节并将其转储成pdf。有些情节自然会在一起,所以我希望它们与PDF格式相同。但是,尺寸会变形,或标题和x轴标签不会显示。有谁知道如何解决这一问题?
以下是一个例子:
set.seed(1)
x <- runif(100)
pdf(file="My pdf.pdf", paper="letter")
par(mfrow=c(2,1)) # squished
hist(x, freq=FALSE)
lines(density(x))
qqnorm(x)
dev.off()
pdf(file="My pdf.pdf", paper="letter")
par(mfrow=c(2,1), pin=c(3,3)) # no titles, etc.
hist(x, freq=FALSE)
lines(density(x))
qqnorm(x)
dev.off()
pdf(file="My pdf.pdf", paper="letter")
par(mfrow=c(2,1), pin=c(3,3), mar=c(4,2,2,1)) # squished again
hist(x, freq=FALSE)
lines(density(x))
qqnorm(x)
dev.off()
pdf(file="My pdf.pdf", paper="letter")
par(mfrow=c(2,1), mar=c(4,2,2,1), pin=c(3,3)) # now titles but overlapping
hist(x, freq=FALSE)
lines(density(x))
qqnorm(x)
dev.off()
我想要的不仅仅是执行此操作的代码,还要了解其工作原理。例如,为什么在最后两个版本中更改参数的顺序会产生很大的不同。请注意,我会在页面上有不同数量的图表(有时是2,4或8),尽管我只是在这里展示最简单的情况。如果存在的话,一些可以很好地自动缩放绘图的代码可能会很好。
答案 0 :(得分:6)
我的一般建议是(1)只坚持一个测量单位,英寸或线条,(2)做一些算术来确定你的设备尺寸需要多大才能适合你的绘图
您正在混合使用线条和英寸的mar
和pin
。我当然不知道1英寸加1行的高度是多么高(尽管我确定我们可以一起破解计算它)。
所以想象一下,你告诉R将两个地块绘制在一起,每个地块高3英寸(pin = c(3,3)
)。我认为您忘记的部分是pdf
的默认设备尺寸只有7英寸高。
因此,如果我们使用英寸设置图形边距,然后将设备尺寸调整为合适的高度:
pdf(file="My pdf.pdf", paper="letter",width = 7,height = 10)
par(mfrow=c(2,1), mai=c(1,0.5,0.5,0.25), pin=c(3,3))
hist(x, freq=FALSE)
lines(density(x))
qqnorm(x)
dev.off()
应该有用。 (我总是增加一点额外的空间。)