在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,那么它将起作用。我也想知道为什么?
谢谢和问候!
答案 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())