frame()出错:图边距太大

时间:2011-06-28 01:35:37

标签: r plot

我正在尝试创建一个图表矩阵,但我希望左上角是空白的。所以我正在使用:

frame()

R回应:

  

frame()出错:数字边距过大

我正在使用以下两行来创建我的布局:

plotIDs <- matrix(c(1:16), 4, 4, byrow = T);
layout(plotIDs, widths = c(0.5,1,1,1,1), heights = c(0.5,1,1,1,1));

这给了我以下布局:

4 by 4 layout with first row and col at half height

如果我然后发出frame(),我会收到上述错误。我究竟做错了什么?我没有看到任何方法为frame()命令指定高度或宽度(只是plot.new()的别名)?

2 个答案:

答案 0 :(得分:9)

该消息表示图中的边距太大,并且没有为绘图留出足够的空间。

尝试减少保证金:

op <- par(mar = par("mar")/2)
plot.new()  ## this is optional for this example
plot(1:10)
par(op)  ## tidy up to restore the default par setting

您可以从frame()或plot.new()开始,或者只是绘制到第一个面板中。请注意,您需要考虑每个不同面板的适当边距设置,以及微调标签尺寸等。

对于一个完全空白的面板,你可以完全杀掉边距:

op <- par(mar = rep(0, 4))
plot.new()
par(op)

答案 1 :(得分:7)

您可以通过在矩阵中使用0来使用布局将面板留空,因此如果您使用0:15而不是1:16,则第一个面板将为空白而无需您跳过。当然,你需要为其余的面板设置边距和cex。