gridExtra::marrange():按行排序图

问题描述 投票:0回答:1

鉴于:

library(ggplot2)
l <- list(1:6)
for(i in 1:6){
  l[[i]] <- ggplot(data=data.frame(x=1:10, y=1:10)) +
    geom_point(aes(x=x, y=y)) +
    ggtitle(i)
}
ml <- marrangeGrob(l, nrow=3, ncol=2)
ml

我得到按列排序的图,即:
1 4
2 5
3 6

但我希望它们按行排列:
1 2
3 4
5 6

我尝试过使用byrow=TRUE,但没有效果。我怎样才能按行排列图?

r ggplot2 gridextra
1个回答
1
投票

正如评论中已经建议的,您可以通过

layout_matrix=
参数指定顺序,即使用
byrow = TRUE
matrix()
参数。

注意:我切换到

lapply
来创建图表
list

library(ggplot2)
library(gridExtra)

l <- lapply(1:6, \(i) {
  ggplot(data = data.frame(x = 1:10, y = 1:10)) +
    geom_point(aes(x = x, y = y)) +
    ggtitle(i)
})

ml <- marrangeGrob(l,
  layout_matrix = matrix(
    seq_len(3 * 2),
    nrow = 3, ncol = 2,
    byrow = TRUE
  )
)

ml

© www.soinside.com 2019 - 2024. All rights reserved.