2015-11-13 4 views
1

Когда я следующий в R, я получаю очень странное гистограммуИспользование geom_bar с заливкой, где же цвет заливки группируется

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 красные области вместо одной, 2 зеленых зоны и 2 синие области.

Почему один и тот же цвет не относится к одной области?

+0

какого значения вы ожидаете, чтобы соответствовать «одной области «? – beetroot

+0

A: 8, B: 106, C: 30 – AllYouCanEat86

ответ

3

ggplot определяет порядок наложения на основе порядка данных. Таким образом, вы можете суммировать ваши данные как @ Mateusz1981 сделал, но другой подход сортировать данные вашего переменного заполнения с помощью заказа:

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

enter image description here

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