123

我是 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)
4

14 回答 14

162

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

于 2014-09-05T18:46:43.027 回答
92

问题是您的调用创建的小图形区域 2layout()不够大,无法仅包含默认边距,更不用说绘图了。

更一般地说,如果设备上的绘图区域大小不足以实际进行任何绘图,则会出现此错误。对于 OP 的情况,问题是绘图设备太小,无法包含所有子图及其边距,并留下足够大的绘图区域来绘制。

如果 Plot 选项卡太小而无法留下足够的空间来包含边距、绘图区域等,RStudio 用户可能会遇到此错误。这是因为该窗格的物理尺寸是图形设备的尺寸。这些不是独立的问题;RStudio 中的绘图窗格只是另一个绘图设备,如png()pdf()windows()X11()

解决方案包括:

  1. 减小边距的大小;这可能会有所帮助,特别是如果您尝试像 OP 一样在同一设备上绘制多个图。

  2. 增加设备的物理尺寸,无论是在对设备的调用中(例如png()pdf()等)还是通过调整包含设备的窗口/窗格的大小

  3. 减小绘图上文本的大小,因为这可以控制边距的大小等。

减小边距的大小

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

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)
于 2012-10-07T08:38:16.523 回答
72

如果您在 RStudio 中收到此消息,单击 Plots 选项卡中的“broomstick”图形“Clear All Plots”并再次尝试 plot() 可能会起作用。

在此处输入图像描述

于 2015-08-26T00:28:40.783 回答
27

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

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 
于 2016-03-18T17:55:13.247 回答
21

我在 R Studio 中遇到了这个错误,并且通过单击并从右到左拖动其边缘使侧边栏变大来简单地修复。

图片在这里:https ://janac.medium.com/error-in-plot-new-figure-margins-too-large-in-r-214621b4b2af

于 2015-11-25T17:55:52.960 回答
10

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

于 2013-06-12T19:50:29.640 回答
5

在此处输入图像描述

如果您使用 RStudio,只需缩放此区域。

于 2016-04-27T17:42:17.447 回答
4

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

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

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

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

错误不存在。:)

你也可以玩分辨率,如果分辨率高,你需要更多的宽度和高度。

于 2016-09-16T10:41:32.933 回答
2

当我尝试绘制高维数据时出现此错误。如果这就是你的情况,请尝试多维缩放: http: //www.statmethods.net/advstats/mds.html

于 2013-06-20T17:34:32.793 回答
2

我为这个错误苦苦挣扎了好几个星期(使用 RStudio)。我尝试将绘图窗口移动得越来越小,但这并没有始终如一的帮助。当我将应用程序移动(拖动)到更大的显示器时,问题就消失了!我惊呆了……浪费了这么多时间……我知道我的代码是正确的……

于 2016-05-01T21:32:41.277 回答
1

如果保证金很低,那么最好从新的绘图设备开始:

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

除非您绘制无法容纳的大东西,否则您将永远不会出现边距错误。

于 2020-03-11T21:20:17.243 回答
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)
    ```
于 2016-01-29T04:15:54.610 回答
0

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

于 2019-02-11T13:32:04.670 回答
0

我刚刚使用了 Clear all plots 然后再次给出 plot 命令,这很有帮助

于 2019-07-22T07:19:13.610 回答