📜  如何在 R 中修复:plot.new() 中的错误:图边距太大(1)

📅  最后修改于: 2023-12-03 15:24:20.715000             🧑  作者: Mango

如何在 R 中修复:"plot.new() 中的错误:图边距太大"

在 R 语言中,我们经常使用 plot() 函数来画图。但是,在某些情况下,当我们试图将图形输出到设备时,可能会收到类似于 "plot.new() 中的错误:图边距太大" 的错误消息。这通常是因为图形边距太大,导致无法将绘图显示在给定的设备上。本文将介绍如何修复这种错误。

出现 "plot.new() 中的错误:图边距太大" 的原因

当我们调用 plot() 函数时,R 会自动计算并设置图形的边距。这些边距是为了确保图形能够完整地显示在设备上。如果边距过大,将会导致图形无法显示。这通常出现在我们绘制大型图形、调整设备大小或使用双屏绘图时。

解决方案

解决 "plot.new() 中的错误:图边距太大" 的方法取决于具体的情况。以下是一些常见的解决方案:

  1. 减小图形边距。我们可以直接调整 plot() 函数中的参数,如 mar(边距大小)和 oma(外边距大小),来减小图形边距。例如:
par(mar = rep(0.1, 4), oma = c(0, 0, 1, 0))
plot(1:10)

在这个例子中,我们将边距设置为 0.1 个英寸,并增加了底部的外边距。

  1. 或者使用 plot.margin 控制图形边距的大小:
library(gridExtra)
p1 <- ggplot(iris, aes(Sepal.Width, Sepal.Length)) +
  geom_point()
p2 <- ggplot(iris, aes(Sepal.Length, Petal.Length)) +
  geom_point()
grid.arrange(p1, p2, ncol = 2, plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), "cm"))

在这个例子中,我们使用 gridExtra 包中的 grid.arrange() 函数来组合两个 ggplot2 图形。我们可以使用 plot.margin 参数来设置边距大小。

  1. 调整设备大小。有时,设备的大小限制可能会导致图形显示不完整。我们可以调整设备大小来解决这个问题。例如:
pdf("myplot.pdf", width = 6, height = 4)
plot(1:10)
dev.off()

在这个例子中,我们将 PDF 设备的宽度设置为 6 英寸,高度设置为 4 英寸。

  1. 使用更大的设备。如果设备太小,我们无法调整大小来解决问题,则可能需要使用更大的设备。例如:
png("myplot.png", width = 1200, height = 800)
plot(1:10)
dev.off()

在这个例子中,我们将 PNG 设备的宽度设置为 1200 像素,高度设置为 800 像素。

结论

出现 "plot.new() 中的错误:图边距太大" 可能是由于图形边距太大,设备太小或其他因素引起的。我们可以尝试减少图形边距,调整设备大小或使用更大的设备来解决这个问题。