“plot.new()出错:数字边距太大”

时间:2010-12-10 15:30:15

标签: r png plot

在R中,我遇到了如下运行错误:

> png("p3_sa_para.png", 4, 2)
> par(mfrow=c(1,2))
> plot(c(1:10), ylab="Beta",xlab="Iteration")
Error in plot.new() : figure margins too large
> plot(c(1:10), ylab="Gamma",xlab="Iteration")
Error in plot.new() : figure margins too large
> dev.off()
X11cairo 
       2 

我已经将图像尺寸缩小到4比2,为什么它还会抱怨“图形边距太大”?如何用png解决这个问题?

奇怪的是,如果我将png更改为pdf,那么它将起作用。我也想知道为什么?

谢谢和问候!

4 个答案:

答案 0 :(得分:24)

png()函数使用像素而不是英寸,所以请尝试

png("p3_sa_para.png", 640, 480)

要回答第二个问题,是的,pdf()使用英寸,因为矢量图形格式没有像素概念。 help(png)help(pdf)函数是您的朋友。

答案 1 :(得分:7)

问题可能仅仅来自使用某个IDE。我正在使用Rstudio,我遇到了一些错误。我完全相同的代码在控制台中运行良好。

答案 2 :(得分:4)

即使我在R-Studio上收到错误,而情节在控制台上显得很好。 RStudio的简单重启解决了这个问题!话虽如此,RStudio的支持页面表明重置图形设备dev.off()可能有所帮助。 http://support.rstudio.org/help/kb/troubleshooting/problem-with-plots-or-graphics-device

答案 3 :(得分:3)

这是一个常见的问题,当您使用IDE时可以专门用于生成并向您展示图表,认为这是一个普遍的问题并且背后有一个逻辑: 当你告诉R绘制某些东西时,R首先查看数据,然后查看它所处理的区域,以便它进行绘图。

png()和类似命令:

在您的情况下,您为绘图提供了一个4 x 2像素的区域来绘制它,因此您可以通过增加适合您的绘图的大小的区域来解决它。 (如Dirk Eddelbuettel mentioned

如果是IDE

这在大多数情况下要简单得多,只需通过拖动边距然后重新运行代码来增加绘图区域(如果之前有任何打开并创建新代码,请关闭任何par()) enter image description here