如何创建具有相同X轴的多个图?

时间:2017-08-07 11:42:10

标签: r layout plot

我正在尝试使用具有相同X轴但不同Y轴的数据集制作单个图。举个例子,我有这个数据集:

A1 <- rnorm(100)
B1 <- rnorm(100)
B2 <- rnorm(100)
B3 <- rnorm(100)

grid <- matrix(c(1:3),nrow=3,ncol=1,byrow=TRUE)
layout(grid)

plot(A1,B1)
plot(A1,B2)
plot(A1,B3)

这就是我得到的并且带有多个X轴:

enter image description here

我知道如何使用ggplot2进行操作,但我正在寻找另一种方法,例如使用layout。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

使用par(mar)和布局功能太容易了。

par(mar=c(6,6,4,4))
layout(matrix(1:3, ncol = 1), widths = 1, heights = c(2.3,2,2.3), respect = FALSE)
par(mar = c(0, 4.1, 4.1, 2.1))
plot(B1,A1,xaxt='n')
par(mar = c(0, 4.1, 0, 2.1))
plot(B2,A1,xaxt='n')
par(mar = c(4.1, 4.1, 0, 2.1))
plot(B3,A1)

enter image description here

答案 1 :(得分:0)

您可以

  1. 使用mfcol中的par参数设置打印数量,使用mar留出边距,oma添加空间到轴上用axismgp来设置将要制作的轴标签的空间。
  2. 使用axes = FALSE制作无轴图。
  3. 使用box在图周围添加框。
  4. 最后用mtext添加轴标签。

这是一个例子

set.seed(32273438)
A1 <- rnorm(100)
B1 <- rnorm(100)
B2 <- rnorm(100)
B3 <- rnorm(100)

par(mfcol = c(3, 1), mar = numeric(4), oma = c(4, 4, .5, .5), 
    mgp = c(2, .6, 0))
plot(A1, B1, axes = FALSE)
axis(2L)
box()
plot(A1, B2, axes = FALSE)
axis(2L)
box()
plot(A1, B3, axes = FALSE)
axis(1L)
axis(2L)
box()
mtext("A1", side = 1, outer = TRUE, line = 2.2)
mtext("B", side = 2, outer = TRUE, line = 2.2)

enter image description here

您可能会遇到重叠的y-ticks问题,但是您可以使用yaxp的{​​{1}}参数来解决。