"plot.new()中的错误:图形边距过大"

19
在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 

我已将图像大小缩小为4x2,为什么它仍然会报“figure margins too large”的错误?如何使用png解决这个问题?

奇怪的是,如果我将png更改为pdf,那么它就可以工作了。我也很好奇为什么会这样。

谢谢和问候!


6
如果你阅读使用的R函数的帮助文档,会省去很多麻烦。png设备中的widthheight?png中已经明确说明了。请注意,不改变原意,使内容通俗易懂,不提供额外解释或信息。 - Gavin Simpson
5
@gavin 我不同意,我遇到了相同的问题,首先我想要的是关于绘图的帮助,然后是有关“par”的帮助,在找了所有无用的信息之后,我最后选择了“png”格式。只有当你知道应该从哪里入手时,帮助才是有用的。 - Tg.
2
@Tg 在你遇到错误的情况下,逻辑做法就是把问题分解。如果没有使用 png() 时绘图正常,那么问题就出在 png() 上。如果去掉 png() 没有任何变化,那么我们已经缩小了问题的范围。对于这种情况,实际上不需要像疯子一样阅读多个帮助文件等等,如果你采用逻辑方法来解决问题,隔离问题所在,然后阅读相关的帮助文件即可。你是否不同意需要阅读帮助文件或其他事情? - Gavin Simpson
9
@gavin,我并不是说人们不应该阅读帮助文档,而是说你不应该假设他没有阅读任何帮助文档。 - Tg.
4个回答

28

png() 函数使用像素而非英寸,因此您可以尝试以下代码:

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

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


+1,但如果需要的话,您也可以指定单位参数,例如对于2乘4英寸,请尝试png("p3_sa_para.png", 4, 2, units="in") - knrumsey

7

问题可能仅仅是使用了某个集成开发环境(IDE)。我使用的是Rstudio,出现了一系列错误。但在控制台中,完全相同的代码却可以正常工作。


4

3
这是一个常见的绘图问题,特别是当你使用带有生成和显示图形的IDE时。虽然这是一个普遍性问题,但它背后有一个逻辑:当你告诉R绘制某些东西时,R首先查看数据,然后查看它可以使用的区域,以便进行绘图。 png()和类似命令: 在你的情况下,你给绘图分配了一个4x2像素的区域来绘制它,因此你可以通过增加一个适合你的绘图的大小来解决它。(正如Dirk Eddelbuettel在这里所提到的) 在IDE中的情况 在大多数情况下,这要简单得多,只需通过拖动边框增加绘图区域,然后重新运行你的代码(如果之前有任何打开的par(),请关闭并创建新的)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接