【问题标题】:Error in plot.new() : figure margins too large in Rplot.new() 中的错误:R 中的图形边距太大
【发布时间】:2012-09-27 18:50:54
【问题描述】:

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

【问题讨论】:

  • 您应该向我们提供一个可重现的示例来证明您遇到的问题。 stackoverflow.com/questions/12765668/…
  • 我尝试了以上所有方法,但没有任何效果。但是,偶尔(至少对于像我这样的新手而言),矩阵或 data.frame 中的数据可能会被强制转换为您不知道的某种类型。在这种情况下,请在您的数据前使用“as.numeric”以确保这不是问题。

标签: r plot


【解决方案1】:

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

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

【讨论】:

  • 这是赢家。为什么这甚至是一件事?
  • 除此之外,没有其他解决方案对我有用。
  • 不知道如何或为什么,但这也是唯一对我有用的解决方案。
  • 如果这个回答对你有帮助,欢迎为这篇文章鼓掌:janac.medium.com/…
【解决方案2】:

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

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

如果“绘图”选项卡太小而无法留出足够的空间来容纳边距、绘图区域等,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)

【讨论】:

  • 啊,谢谢你的澄清。我正在操作 layout(matrix()) 。感谢您的帮助!
  • 这对我来说是正确的提示。我不得不增加图像大小,或降低png(filename="myfile.png", res=150, width = 1000, height = 1000)中的分辨率
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 欢迎来到 SO。请你解释一下为什么这是答案。
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

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

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

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

      错误不存在。 :)

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

            • 这比购买更大的显示器更好。还有一个 x11() 命令应该可以在 Linux 上运行。
            • 有史以来最合适的答案。谢谢。
            • MacOSX 的任何等价物?
            • 当我在绘制 OLS-CUSUM 时在 RStudio 中收到 Error in plot.new() : figure margins too large 错误时,我尝试了此解决方案,并且效果非常好。非常感谢 jobligado。
            • 对我来说,dev.off() 关闭了窗口,所以如果您除了绘制它还想查看它,我会跳过该行
            【解决方案10】:

            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)
                ```
            

            【讨论】:

              【解决方案11】:

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

              【讨论】:

              • 这是最好的答案。
              • graphics.off()
              • 我喜欢这个答案
              • 这确实是最好的答案。谢谢。
              【解决方案12】:

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

              【讨论】:

              • 这解决了我的问题!我扩大了“环境”窗口,缩小了“绘图”等窗口。我只需要扩大窗口。谢谢!
              • 同意,这也影响了我的 RStudio,只是扩大窗口有所帮助。
              • 有时由于使用 par(),我不小心得到了许多窗格。 par(mfrow=c(1,1)) 可以将您重置为一个窗格。
              • 这对我来说是一个非常奇怪的错误,因为我是 R 新手。以前从未遇到过任何其他语言/IDE 的问题,因为 IDE 布局会影响我的代码!
              • 太棒了,这对我也有用。真是个奇怪的错误!
              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

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

                【讨论】:

                • 这是为我完成的(在 Rstudio 中使用 png() / dev.off())。
                猜你喜欢
                • 2011-05-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-20
                • 2014-05-27
                • 1970-01-01
                • 2022-12-09
                • 1970-01-01
                相关资源
                最近更新 更多