plot.new()中的错误:R中的图边距太大


111

我是R的新手,但是我使用较小的数据集进行了许多相关图。但是,当我尝试绘制一个大数据集(2gb +)时,我可以很好地生成该图,但图例不会显示。有什么建议吗?或替代品?

library(gplots)
r.cor <- cor(r)
layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
par(oma=c(5,7,1,1))
cx <- rev(colorpanel(25,"yellow","black","blue"))
leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]], 
    cex.axis=0.9,las=2)
axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]],
     cex.axis=0.9,las=2)
image(as.matrix(leg),col=cx,axes=T)     

错误plot.new():数字边距太大

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)

1
您应向我们提供一个可复制的示例,以证明您遇到的疾病。stackoverflow.com/questions/12765668/...
罗马Luštrik

我尝试了以上所有方法,但没有任何效果。但是,有时(至少对于像我这样的新手来说),矩阵或data.frame中的数据可能会被强制转换为您不知道的某种类型。在这种情况下,请在数据前使用“ as.numeric”,以确保这不是问题。
pApaAPPApapapa

Answers:


84

我怀疑问题是您的layout()呼叫创建的小图形区域2 不够大,不足以仅包含默认边距,更不用说绘图了。

在导致问题的行之前尝试:

par(mar = rep(2, 4))

然后绘制第二张图片

image(as.matrix(leg),col=cx,axes=T)

您需要在par()我显示的通话中尝试保证金的大小,以实现此目的。您可能还需要增加要绘制的实际设备的尺寸。

最后提示,请par()在更改默认值之前保存默认值,因此将现有par()调用更改为:

op <- par(oma=c(5,7,1,1))

然后在绘图结束时

par(op)

啊,谢谢你的澄清。我是在操纵layout(matrix())。感谢帮助!
史蒂夫·黄

2
这对我来说是正确的提示。在png(filename="myfile.png", res=150, width = 1000, height = 1000)
vanao veneri

146

仅仅因为您的“绘图”窗格太小,在Rstudio中会发生此错误。尝试缩放“文件,图,包,帮助,查看器”,看看是否有帮助!


8
这解决了我的问题!我已经扩大了“环境”窗口,缩小了“图”等窗口。我只需要扩大窗口。谢谢!
Rock Lee

同意,这也影响了我的RStudio,只是扩大了窗口。
金兹

有时候,由于使用par(),我不小心遇到了许多窗格。par(mfrow=c(1,1))可以将您重置为一个窗格。
马特

1
因为我是R的新手,所以这对我来说是一个非常奇怪的错误。之前从未遇到过任何其他语言/ IDE会影响我的代码的问题!
Adarsha)

太棒了,这也对我有用。如此奇怪的错误!
穆罕默德

70

如果在RStudio中收到此消息,请单击“绘图”选项卡中的“扫帚”图“清除所有绘图”,然后再次尝试plot()可能会起作用。

在此处输入图片说明


1
这是最好的答案。
NewbieDave '16

15
graphics.off()
rawr

我喜欢这个答案
O.rka '16

这确实是最好的答案。谢谢。
mervebıçakçı16年

24

这有时在RStudio中发生。为了解决该问题,您可以尝试绘制到外部窗口(仅Windows):

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 

1
这比购买更大的显示器更好。还有一个x11()命令应在Linux上运行。
罗恩·詹森-我们都是Monica,

1
有史以来最合适的答案。谢谢。
TeeKea

MacOSX是否有等效功能?
TeYaP

当我Error in plot.new() : figure margins too large在绘制OLS-CUSUM时在RStudio中遇到错误时,尝试了此解决方案,它奇迹般地起作用了。非常感谢jobligado。
Erdogan CEVHER

19

我在R Studio中遇到此错误,并通过在右侧和右侧单击并拖动其边缘来增大侧边栏来解决此问题。


2
这是赢家。为什么这甚至是东西?
colin

2
除此以外,其他解决方案都对我不起作用。
zsad512

1
不知道如何或为什么,但这也是对我有用的唯一解决方案。
TheSciGuy

10

检查您的对象是列表还是向量。为此,请键入is.list(yourobject)。如果是这样,请尝试重命名x<-unlist(yourobject)。这将使它成为可以绘制的向量。


这为我做到了(在Rstudio中使用png()/ dev.off())。
Knowah 2015年


3

我今天发现了这个错误。最初,我试图将其输出到.jpeg宽度和高度较低的文件中。

jpeg("method1_test.jpg", width=900, height=900, res=40)

后来我将宽度和高度增加到:

jpeg("method1_test.jpg", width=1900, height=1900, res=40)

错误不存在。:)

您也可以使用分辨率,如果分辨率较高,则需要更多的宽度和高度。



2

我(使用RStudio)在数周的时间里一直在解决这个错误。我尝试将绘图窗口变大或变小,但这并不能始终如一。当我将应用程序移动(拖动)到更大的显示器时,问题消失了!我被惊呆了...浪费了很多时间...我知道我的代码是正确的...


0

RStudio Plots画布限制了绘图的宽度和高度。但是,如果您使用Rmarkdown代码块进行打印,则它的工作不受画布字段的限制,因为打印区域是根据纸张尺寸设置的。

例如:

    ```{r}
#inside of code chunk in Rmarkdown
        grid <- par(mfrow=c(4, 5))
        plot(faithful, main="Faithful eruptions")
        plot(large.islands, main="Islands", ylab="Area")
        ...
        par(grid)
    ```

0

我今天发现了同样的错误。我已经尝试过“清除所有图表”按钮,但这给了我同样的错误。然后这个技巧对我有用, 尝试通过拖动来增加绘图区域。它将帮助您。



0

如果边距较低,那么最好从新的绘图设备开始:

dev.new()
# plot()
# save your plot
dev.off()

除非您绘制了无法容纳的较大内容,否则您将永远不会得到边距误差。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.