在 grid.layout 中控制内部图形边距

4
我将尝试在网格中绘制多个格子图。为此,我使用以下代码:
plot <- xyplot(1:10~1:10)

page.layout <- grid.layout(nrow = 2, ncol = 1,
               widths = unit(c(1), "null"),
               heights = unit(c(1), "null"),
               default.units = "null",
               respect = FALSE,
               just = "centre")

pushViewport(viewport(layout = page.layout))
pushViewport(viewport(layout.pos.row = 1))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()
pushViewport(viewport(layout.pos.row = 2))
par(mar = c(5, 4, 4, 2))
print(plot, newpage = FALSE)
popViewport()

我现在想减少两个图形之间的空间,我在 gridBase 的小册子中读到,简单的图形控制,如 (mar=c()) 应该是有效的,但在这里并不是这样。 也许我漏掉了一些显而易见的东西,但我无法弄清楚为什么我无法控制边距参数。 有什么建议吗?


gridBase 用于混合基础图形和网格图形,但这里只有网格图形(lattice)。 - baptiste
1个回答

4
提供了一些选项来控制绘图边距。
 p <- xyplot(1:10~1:10,
             par.settings=list(layout.heights=list(top.padding=-3, bottom.padding=-1)))

library(gridExtra)
grid.arrange(p, p, nrow=2)

谢谢Baptiste,我一直在尝试你建议的代码,但似乎仍然不能完成任务。你觉得可能是因为我的机器上par.setting无法正常工作吗?我这么说是因为我还尝试着设置全局图形参数(字体大小、类型等),通过定义my.theme <- list(par.xlab.text = list(font=3,fontfamily="serif")) 然后在xyplot par.setting中调用my theme,但即使这样也不起作用。 - matteo
让我们忘了它吧。现在它运行得很好。感谢您的建议。 - matteo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接