[英]How to center graphs in a plot in R?
不是最优雅的代码,但它可以工作。 AFAIK 有一个包,您可以在其中为每个绘图指定大小和位置,但我还没有找到它。 我只使用cowplot
和函数plot_grid
生成情节
x <- rnorm(100)
y <- x * 2 + rnorm(100)
plt.df <- data.frame(x, y)
p <- ggplot(plt.df, aes(x = x, y = y)) + geom_point()
将它们排列成网格
cowplot::plot_grid(
cowplot::plot_grid(p, p, p, p, p, p, ncol = 3, nrow = 2),
cowplot::plot_grid(NULL, p, p, NULL, rel_widths = c(0.5, 1, 1, 0.5), nrow = 1),
nrow = 2,
rel_heights = c(2, 1)
)
我首先像往常一样定义一个由 6 个图组成的网格。 然后我定义了一个由 4 个图组成的网格,其中两个为空,并使用rel_widths
参数来确定它们的大小。 为了结合所有这些,我再次调用plot_grid
,它接受前两个网格。 现在定义rel_heights
参数以确保它们的大小都相似(因为有两个网格,一个比另一个多两倍的图,那么比率应该是 2)。
这也可以在基础 R 中通过为layout
指定适当的矩阵来完成。
layout.m <- matrix(c(rep(1:6, each=2),
0, rep(7:8, each=2), 0),
nrow=3, byrow=T)
此矩阵指定 3 × 6 网格布局中八个图形的位置,其中两个单元格留空。
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 1 1 2 2 3 3
# [2,] 4 4 5 5 6 6
# [3,] 0 7 7 8 8 0
现在只需设置布局并进行绘图。
layout(layout.m)
par(mar=c(4, 4.5, 1, .5))
x <- 1:100
for (i in 1:8) {
y <- rnorm(100)
plot(x, y)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.