使用带填充的geom_bar,将相同的填充颜色组合在一起

时间:2015-11-13 12:08:52

标签: r ggplot2

当我在R中执行以下操作时,会得到一个非常奇怪的条形图

a <- c('A', 'B','C','A','B', 'A','C')
b <- rep(2015, 7)
c <- c(5, 32, 7, 1, 74, 2, 23)
d <- data.frame(a,b,c)
ggplot(data=d, aes(x=b, y=c, fill=a)) + geom_bar(stat="identity")

我得到以下图表

我有3个红色区域而不是1个,2个绿色区域和2个蓝色区域。

为什么相同的颜色不会加到一个区域?

2 个答案:

答案 0 :(得分:3)

ggplot根据数据的顺序确定堆叠顺序。因此,您可以像@ Mateusz1981那样汇总数据,但另一种方法是使用订单按填充变量对数据进行排序:

ggplot(data=d, aes(x=factor(b), y=c, fill=a, order=a)) + 
    geom_bar(stat="identity")

enter image description here

答案 1 :(得分:2)

直接

ggplot(data=d, aes(x=factor(b), y=c, fill = factor(a))) + stat_summary(fun.y = sum, aes(group = a), geom = "bar", position = "stack")

dplyr

library(dplyr)
    library(ggplot2)
    d <- d %>%  group_by(a, b) %>% summarise(s = sum(c))
    ggplot(data=d, aes(x=factor(b), y=s, fill=a)) + geom_bar(stat="identity")

enter image description here