ggplot2条形图的多个子组

我正在尝试生成具有多个因素分组的条形图。 我尝试创build的一个例子来自于品种和灌溉处理的细分:

在这里输入图像描述

我知道我可以使用facet_wrap()生成多个图表,但是我想为多年的类似数据生成同一types数据的多个图表。 我在这个例子中使用的数据的一个例子:

 Year Trt Variety geno yield SE 2010-2011 Irr Variety.2 1 6807 647 2010-2011 Irr Variety.2 2 5901 761 2010-2011 Irr Variety.1 1 6330 731 2010-2011 Irr Variety.1 2 5090 421 2010-2011 Dry Variety.2 1 3953 643 2010-2011 Dry Variety.2 2 3438 683 2010-2011 Dry Variety.1 1 3815 605 2010-2011 Dry Variety.1 2 3326 584 

有没有办法在ggplot2中创build多个分组? 我已经search了相当长的一段时间,还没有看到类似上面的示例图的例子。

感谢您的帮助!

这可能是一个开始。

 dodge <- position_dodge(width = 0.9) ggplot(df, aes(x = interaction(Variety, Trt), y = yield, fill = factor(geno))) + geom_bar(stat = "identity", position = position_dodge()) + geom_errorbar(aes(ymax = yield + SE, ymin = yield - SE), position = dodge, width = 0.2) 

在这里输入图像描述

更新:x轴标签
我已经添加了:
coord_cartesian来设置y轴的极限,主要是避免轴默认扩展的下限。
annotate ,添加所需的标签。 我已经对x位置进行了硬编码,在这个非常简单的例子中,我发现这个位置是可行的。
theme_classic ,去除灰色背景和网格。 theme ,增加更低的地块边缘,为双排标签留有余地,删除默认标签。
最后一组代码:因为文本被添加到x轴以下,所以它在绘图区域之外“消失”,我们需要删除“剪辑”。 而已!

 library(grid) g1 <- ggplot(data = df, aes(x = interaction(Variety, Trt), y = yield, fill = factor(geno))) + geom_bar(stat = "identity", position = position_dodge()) + geom_errorbar(aes(ymax = yield + SE, ymin = yield - SE), position = dodge, width = 0.2) + coord_cartesian(ylim = c(0, 7500)) + annotate("text", x = 1:4, y = - 400, label = rep(c("Variety 1", "Variety 2"), 2)) + annotate("text", c(1.5, 3.5), y = - 800, label = c("Irrigated", "Dry")) + theme_classic() + theme(plot.margin = unit(c(1, 1, 4, 1), "lines"), axis.title.x = element_blank(), axis.text.x = element_blank()) # remove clipping of x axis labels g2 <- ggplot_gtable(ggplot_build(g1)) g2$layout$clip[g2$layout$name == "panel"] <- "off" grid.draw(g2) 

在这里输入图像描述