ggplot2:将x轴离散值分组到子组中

时间:2014-04-21 23:44:21

标签: r ggplot2 grouping

我想创建一个带有ggplot2的条形图,其中x轴的离散值将被分组为子组(参见图片 - 图片来自网络我还没有图表的代码)。

enter image description here

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

两种方法:

示例数据:

dat <- data.frame(value=runif(26)*10,
                  grouping=c(rep("Group 1",10),
                             rep("Group 2",10),
                             rep("Group 3",6)),
                  letters=LETTERS[1:26])

head(dat)
     value grouping letters
1 8.316451  Group 1       A
2 9.768578  Group 1       B
3 4.896294  Group 1       C
4 2.004545  Group 1       D
5 4.905058  Group 1       E
6 8.997713  Group 1       F

没有分面:

ggplot(dat, aes(grouping, value, fill=letters, label = letters)) + 
     geom_bar(position="dodge", stat="identity") + 
     geom_text(position = position_dodge(width = 1), aes(x=grouping, y=0))

使用facetting:

ggplot(dat, aes(letters,value, label = letters)) + 
     geom_bar(stat="identity") + 
     facet_wrap(~grouping, scales="free")

Facetting具有明显的优势,即不必沉溺于标签的定位。