是否有R函数来调整for循环下的布局

时间:2019-08-18 14:47:52

标签: r ggplot2

我有一个数据框和一个代码来绘制所有图形,这是一个因素。但是我需要调整布局。我需要2行1列。但是当前代码仅显示1列3行

 df
  a  b c  d
1 a dg 1 dg
2 b dg 2 dg
3 a dg 3 dg
4 d fd 4 fd

p <- list()
as <- names(Filter(is.factor, df))
for(i in 1:length(as))
{
p[[i]] <- 
print(ggplot(data=df,aes_string(x=as[i],fill=as[i]))+geom_bar(stat = 
"count"))
do.call(grid.arrange,p)
}

我需要在这里调整布局。我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是您要查找的布局吗?

library(ggplot2)
library(gridExtra)

df <- read.table(text = "
a  b c  d
1 a dg 1 dg
2 b dg 2 dg
3 a dg 3 dg
4 d fd 4 fd
", header = T)

as <- names(Filter(is.factor, df))

p <- list()

for(i in 1:length(as))
{
  p[[i]] <- ggplot(data=df,aes_string(x=as[i],fill=as[i]))+geom_bar(stat = "count")
}

grid.arrange(grobs = p, ncol = 2, layout_matrix = rbind(c(1, 2), c(3, 3)))

Revised plot with grid.arrange

编辑:grid.arrange包含基于注释的布局,第二行以全宽显示。

根据您对要在哪个位置放置哪个地块的评论,您可以具体指定您的单个杂物:

grid.arrange(grobs = c(p[3], p[1], p[2]), ncol = 2, ...

或者您可以在绘制图形之前用一些逻辑命令您的grob。