既然你没有提供任何样本数据,我将使用一个内置的数据集mtcars
。通过扩展我上面的评论,您可以创建一个新的组变量,其中包含您想要的组数。使用这个你可以做的1 3两件事: (1)Facet_wrap
,(2)grid.arrange
,或(3)
新页面
数据设置:
group.len <- 8
map <- data.frame(hp = unique(mtcars$hp),
new_group = rep(1:ceiling(length(unique(mtcars$hp))/group.len), each = group.len,
length.out = length(unique(mtcars$hp))))
df <- merge(mtcars, map)
刻面包装:
ggplot(data = df, aes(x = cyl, y = mpg, fill = as.factor(hp))) +
geom_bar(stat="identity") + facet_wrap(~new_group)
Grid.arrange:
我使用完全相同的方法,因为在这个岗位place a legend for each facet_wrap grid in ggplot2。原来是关于得到不同的传说每个面,但我认为它也很适用于您的问题:
library(gridExtra)
out <- by(data = df, INDICES = df$new_group, FUN = function(m) {
m <- droplevels(m)
m <- ggplot(m, aes(as.factor(cyl), mpg, fill = as.factor(hp))) +
geom_bar(stat="identity")
})
do.call(grid.arrange, out)
新页:
注意这里使用了out
对象从电网。安排。这将使每个小区一个新的页面(而不是所有在一个页面上像grid.arrange
。
lapply(out, function(x) {x})
为什么不创建一个'group'变量,然后用它来刻面? –