当我在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个蓝色区域。
为什么相同的颜色不会加到一个区域?
答案 0 :(得分:3)
ggplot根据数据的顺序确定堆叠顺序。因此,您可以像@ Mateusz1981那样汇总数据,但另一种方法是使用订单按填充变量对数据进行排序:
ggplot(data=d, aes(x=factor(b), y=c, fill=a, order=a)) +
geom_bar(stat="identity")
答案 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")