利润率问题&以pdf格式绘制多图中的地块大小

时间:2014-04-07 21:04:57

标签: r

我试图制作大量情节并将其转储成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()

enter image description here

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()

enter image description here

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()

enter image description here

我想要的不仅仅是执行此操作的代码,还要了解其工作原理。例如,为什么在最后两个版本中更改参数的顺序会产生很大的不同。请注意,我会在页面上有不同数量的图表(有时是2,4或8),尽管我只是在这里展示最简单的情况。如果存在的话,一些可以很好地自动缩放绘图的代码可能会很好。

1 个答案:

答案 0 :(得分:6)

我的一般建议是(1)只坚持一个测量单位,英寸或线条,(2)做一些算术来确定你的设备尺寸需要多大才能适合你的绘图

您正在混合使用线条和英寸的marpin。我当然不知道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()

应该有用。 (我总是增加一点额外的空间。)