如何调整R中布局内单个图的边距?

时间:2017-11-23 19:23:12

标签: r layout plot margins par

我有一个由7个图形组成的布局,一个在顶部,另一个在第一个下面的3x2矩阵中展开。在我的布局中,情节完全在一起,我想在第一个情节和其他情节之间留下一点gao。我怎么能在R?中做到这一点?

layout(matrix(c(1,1,2,3,4,5,6,7), 4, 2, byrow = T))

par(mar = c(0,0,0,0), oma = c(5,4,0.5,0.5), las =1)


plot(1:10, axes = T, type = "n", xlim = c(0,30), ylim = c(-3,2), las =1)
mtext(letters[1], side = 3, line = -1.5, adj = 0.025)

for (i in 2:7){
  plot(1:10, axes = F, type = "n", xlim = c(0,30), ylim = c(-3,1.8))
  mtext(letters[i], side = 3, line = -1.5, adj = 0.025)

  if (i %in% c(6,7))
    axis(side = 1)

  if (i %in% c(2,4,6))
    axis(side = 2)
  box()
}
mtext("x axis", side = 1, outer = TRUE, line = 3)
mtext("y axis", side = 2, outer = TRUE, line = 3, las = 3)

enter image description here

我想要像

这样的东西

enter image description here

1 个答案:

答案 0 :(得分:4)

在第一个绘图之前在底部轴添加边距

par(mar = c(2.5,0,0,0))

然后,开始for删除此边距

par(mar = c(0,0,0,0))

完整代码:

layout(matrix(c(1,1,2,3,4,5,6,7), 4, 2, byrow = T))

par(mar = c(0,0,0,0), oma = c(5,4,0.5,0.5), las =1)

par(mar = c(2.5,0,0,0)) #Add a space in the bottom axis

plot(1:10, axes = T, type = "n", xlim = c(0,30), ylim = c(-3,2), las =1)
mtext(letters[1], side = 3, line = -1.5, adj = 0.025)

for (i in 2:7){

  par(mar = c(0,0,0,0)) #delete the space in the bottom axis

  plot(1:10, axes = F, type = "n", xlim = c(0,30), ylim = c(-3,1.8))
  mtext(letters[i], side = 3, line = -1.5, adj = 0.025)

  if (i %in% c(6,7))
    axis(side = 1)

  if (i %in% c(2,4,6))
    axis(side = 2)
  box()
}
mtext("x axis", side = 1, outer = TRUE, line = 3)
mtext("y axis", side = 2, outer = TRUE, line = 3, las = 3)

enter image description here