【问题标题】:Error in plot.new() : figure margins too large, Scatter plotplot.new() 中的错误:图形边距太大,散点图
【发布时间】:2014-05-27 20:55:41
【问题描述】:

我查看了不同的问题以寻求解决方案,并尝试了建议的方法,但我还没有找到解决方案。

每次我想运行这段代码时,它总是说:

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

我不知道如何解决它。这是我的代码:

par(mfcol=c(5,3))
hist(RtBio, main="Histograma de Bio Pappel")
boxplot(RtBio, main="Diagrama de Caja de Bio Pappel")
stem(RtBio)
plot(RtBio, main="Gráfica de Dispersión")

hist(RtAlsea, main="Histograma de Alsea")
boxplot(Alsea, main="Diagrama de caja de Alsea")
stem(RtAlsea)
plot(RtTelev, main="Gráfica de distribución de Alsea")

hist(RtTelev, main="Histograma de Televisa")
boxplot(telev, main="Diagrama de Caja de Televisa")
stem(Telev)
plot(Telev, main="Gráfica de dispersión de Televisa")

hist(RtWalmex, main="Histograma de Walmex")
boxplot(RtWalmex, main="Diagrama de caja de Walmex")
stem(RtWalmex)
plot(RtWalmex, main="Gráfica de dispersión de Walmex")

hist(RtIca, main="Histograma de Ica")
boxplot(RtIca, main="Gráfica de caja de Ica")
stem(RtIca)
plot(RtIca, main="Gráfica de dispersión de Ica")

我能做什么?

【问题讨论】:

  • 边距对于您的图像来说似乎太大。如果您有一个小的绘图窗口,就会发生这种情况。无论如何,您的描述不足以诊断问题。我们可以在绘图窗口中使用 R 会话的可重现示例或屏幕截图。
  • 我的情况是,它有助于使用要绘制的数据的一小部分进行调试,例如 plot(df[1,1:3], df2[1,1:3]) - 然后我意识到我真正想要做的是 plot(unlist(df[1,1:3]), unlist(df2[1,1:3])) 还有见:stackoverflow.com/a/17074060/6018688

标签: r plot figure margins


【解决方案1】:

尝试通过par()中的mai=c()设置边距大小,例如,

par(mfcol=c(5,3),mai=c(0.5,0.5,0.5,0))

有关 mai

的更多详细信息,请参阅documentation

【讨论】:

    【解决方案2】:

    在绘制数据之前运行graphics.off()。 该指令解决了我的错误。因此,在采取更复杂的解决方案之前尝试一下是无害的。

    【讨论】:

    • 当使用 JetBrains R 插件从 PyCharm 运行时,这会导致某种无限递归和堆栈溢出:“错误:C 堆栈使用 15924416 太接近限制”
    • 我知道它可能不适用于所有情况。但正如我所提到的,在采取任何其他复杂的行动之前,如果你尝试这个简单的指令,它不会伤害你。它适用于我的情况,也可能适用于其他人。
    • 它对我有用,2021 年 11 月 24 日
    【解决方案3】:

    只是一个旁注。有时会出现此“边距”错误,因为您想在 R 中保存高分辨率图形(例如 dpi = 300res = 300)。
    在这种情况下,您需要做的是指定宽度和高度。 (顺便说一句,ggsave() 不需要这个。)

    导致边距错误:

    # eg. for tiff()
    par(mar=c(1,1,1,1))
    tiff(filename =  "qq.tiff",
         res = 300,                                                 # the margin error.
         compression = c( "lzw") )
    # qq plot for genome wide association study (just an example)
    qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
    dev.off()
    

    将修复边距错误:

    # eg. for tiff()
    par(mar=c(1,1,1,1))
    tiff(filename =  "qq.tiff",
         res = 300,                                                 # the margin error.
         width = 5, height = 4, units = 'in',                       # fixed
         compression = c( "lzw") )
    # qq plot for genome wide association study (just an example)
    qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
    dev.off()
    

    【讨论】:

      【解决方案4】:

      只需清除绘图并尝试再次执行代码...它对我有用

      【讨论】:

      • 感谢@Shravya Mutyapu,它帮助了我:)
      【解决方案5】:

      当您在 RStudio 中的绘图面板对于您尝试创建的绘图的边距而言太小时,可能会发生这种情况。尝试对其进行扩展,然后再次运行您的代码。

      当绘图面板太小而无法显示图表时,RStudio UI 会导致错误:

      只需展开绘图面板即可修复错误并显示图表:

      【讨论】:

      • 它确实有效.. 只是扩大情节区域有帮助
      • 是的,可以在 RStudio 中调整面板大小。这是一个 RStudio 错误,当您通过滑动绘图面板来最小化 UI 的右侧时。
      • 这实际上在大多数情况下都有效。在少数情况下,边距确实很小,即使您最大化此窗口,您也无法解决此问题
      • 我第一次尝试这个,没有用。然后我尝试按照另一个答案中的建议设置par(mar=c(1,1,1,1)),它起作用了。不知道为什么。 :(
      【解决方案6】:

      如果您在 RStudio 中收到此消息,请单击 Plots 选项卡中的“broomstick”图形“Clear All Plots”,然后再次尝试 plot()。

      再执行命令

      graphics.off()
      

      【讨论】:

      • 写这三行graphics.off()par("mar")par(mar=c(1,1,1,1))
      【解决方案7】:

      每次创建绘图时,您都可能会收到此错误 - “Error in plot.new() : figure margins too large”。为避免此类错误,您可以先检查par("mar") 输出。你应该得到:

      [1] 5.1 4.1 4.1 2.1
      

      改变那个写法:

      par(mar=c(1,1,1,1))
      

      这应该可以纠正错误。否则,您可以相应地更改值。

      希望这对你有用。

      【讨论】:

      • 您如何确切地知道哪些值在边距内?为什么你说我应该得到 [1] 5.1 4.1 4.1 2.1,但你却告诉我把它改成全 1?
      • 我在使用 RStudio 时遇到了同样的问题,当我输入 par("mar") 时,我检索到了相同的字符串 [1] 5.1 4.1 4.1 2.1,所以我输入了 par(mar=c(1,1,1,1)),但随后 plot() 不会绘制任何东西,所以我不得不关闭 RStudio 和终端。重新打开RStudio后就恢复正常了。
      • 在 RStudio 的 R markdown 中也遇到了同样的问题。不过,Guest R 的解决方案或 @noobninja restart 都没有为我修复它。
      • @Nicole Sullivan 我在没有 RStudio 的情况下也遇到了这个错误。我按照描述做了,它有效。谢谢@djhurio!
      • 这对我有用 par(mar=c(2,2,2,2))。回答@HermanToothrot,似乎这些是默认值,这就是他知道你应该得到什么的方式,然后他将它们全部减少到1。
      【解决方案8】:

      调用dev.off() 让 RStudio 打开一个新的图形设备,默认设置对我有用。 HTH。

      【讨论】:

      • 你能解释一下怎么做吗?
      • 在 R 控制台中输入 dev.off(),按 Enter。
      • 我在构建包时遇到了@example 错误。在示例中添加 dev.off() 解决了这个问题。谢谢。 :-)
      • 但如果您制作的数字不止一个,也请尝试添加:par(mar=rep(2, 4))
      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多