我试图为这个情节创建这个布局:
layout(matrix(c(1,1,1,1,1,1,
2,2,2,3,3,3,
2,2,2,3,3,3,
2,2,2,3,3,3), nrow=4,ncol=6,byrow = TRUE))
# Set up the top chart that keeps track of the current frame/iteration
# Dress it up a little just for fun
plot(-5, xlim = c(1997,2011), ylim = c(0, .3), xlab = "", ylab = "", main = "Time",axes=F)
abline(v=1995, lwd=5, col = rgb(0, 0, 255, 255, maxColorValue=255))
# Bring back the X axis
xticks <- 1997:2011
axis(side=1, at=xticks, labels=xticks)
# Plot
plot(1:100,1:100)
plot(1:100,1:100)
显然,在我的实际代码中,最后两个情节并非plot(1:100,1:100)
,但我对layout
的使用有疑问。为什么我在第一个情节中得到这个错误?
Error in plot.new() : figure margins too large
我希望第一张照片有一点高度
答案 0 :(得分:4)
听起来可能很傻,但原因确实是数字边距太大了!
让我详细说明一下。在R中,有几种边距让你的照片呼吸:
在您的特定情况下,边缘正在占用所有可用空间,因为您试图在同一图中填充太多数字。
要解决这个问题,我建议将所有边距设置为0:
par(mai=c(0,0,0,0), oma=c(0,0,0,0), mar=c(0,0,0,0))
这可能会导致您的情节至少被渲染。同时,所有子图都会彼此太靠近,所以你必须一点一点地增加边距,同样调用par(...)
,直到结果看起来很好。
希望这会有所帮助:)
答案 1 :(得分:2)
边距通过参数par(mar)
,par(oma)
和par(mai)
以行高的倍数来衡量,如?par
MAR
形式c(底部,左侧,顶部,右侧)的数字向量,它给出了在图的四边指定的边距线数。默认值为c(5,4,4,2)+ 0.1。
有两种解决方案,您可以(a)通过设置之前的&#39; par()&#39;来减少边距。设置或(b)您可以通过使用鼠标重新调整设备(如果它是可见设备)或者如果要打印到PDF来增加设备的大小,例如,您可以设置设备大小通过在设置设备时设置高度和宽度参数来增大,如:
pdf( <<FileNameHere>> , width = par('din')[1],height = par('din')[2] )
我将宽度设置为par('din')[1]
,高度设置为par('din')[2]
,您将获得与当前设备尺寸相同的PDF,这样您就可以使用鼠标调整可见设备。 (这对于一次性情节和生产环境的不良做法非常方便)
如果确实缩小了边距,我建议不要设置mar=c(0,0,0,0)
,因为这会导致没有可见的轴标签。