我有一个数据框和一个代码来绘制所有图形,这是一个因素。但是我需要调整布局。我需要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)
}
我需要在这里调整布局。我该怎么办?
答案 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)))
编辑:grid.arrange包含基于注释的布局,第二行以全宽显示。
根据您对要在哪个位置放置哪个地块的评论,您可以具体指定您的单个杂物:
grid.arrange(grobs = c(p[3], p[1], p[2]), ncol = 2, ...
或者您可以在绘制图形之前用一些逻辑命令您的grob。