Как мне построить составной бар с ggplot?
Я просматривал примеры, представленные на этой странице, но по какой-то причине не смог найти правильный способ сделать это.
У меня есть некоторые данные, как это:
Group Member Percentage
[1,] "1" "A" "60"
[2,] "1" "A" "20"
[3,] "1" "A" "20"
[4,] "1" "B" "80"
[5,] "1" "B" "5"
[6,] "1" "B" "5"
[7,] "1" "B" "5"
[8,] "2" "C" "50"
[9,] "2" "C" "50"
[10,] "2" "D" "25"
[11,] "2" "D" "25"
[12,] "2" "D" "25"
[13,] "2" "D" "20"
[14,] "2" "D" "5"
и может быть создан с помощью следующих команд:
a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", position="dodge", fill="white", colour="black")
Последняя строка дает мне следующий сюжет:
То, что я действительно ищу, - это объединить каждый из столбцов в одной группе в один столбец и представить проценты в виде доли того же столбца (где каждый член из каждой группы изображен с одним столбцом, причем каждый столбец имеет процент в качестве их цвета). Поэтому я использовал следующее:
ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", colour="white")
и получил это:
Но сейчас я не могу получить цвета должным образом. Я хочу что-то подобное тому, что приведено ниже, но я не могу понять, как это сделать. Любые предложения о том, как это сделать?
2 ответа
Хорошо, наконец, понял! Ура! Вот полный код, если кто-то заинтересован:
a = c(1,1,1,1,1,1,1,2,2,2,2,2,2,2)
b = c("A","A","A","B","B","B","B","C","C","D","D","D","D","D")
c = c(60,20,20,80,5,5,5,50,50,25,25,25,20,5)
dat = data.frame(Group=a, Member=b, Percentage=c)
ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
и с тем, что было предложено @joran (Большое спасибо!) в комментариях:
ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")
Ты рядом. Пытаться
ggplot(dat, aes(x=Member, y=Percentage, fill = factor(Percentage))) + geom_bar(stat = "identity")
Который производит