Как построить линейный бар с помощью ggplot? - PullRequest
9 голосов
/ 28 июля 2011

Я просматривал примеры, представленные на этой странице, но по какой-то причине не смог найти правильный способ сделать это.

У меня есть такие данные:

      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")

Последняя строка дает мне следующий график:

enter image description here

То, что я действительно ищу, - это объединить каждый из столбцов в одной группе в один столбец и представить проценты в виде доли одного и того же столбца (где каждый член из каждой группы представлен одним столбцом, причем каждый столбец имеет проценты как их цвета). Поэтому я использовал следующее:

ggplot(dat, aes(x=Member, y=Percentage)) + geom_bar(stat="identity", colour="white")

и получил это:

enter image description here

Но теперь я не могу правильно подобрать цвета. Я хочу что-то, похожее на приведенное ниже, но не могу понять, как это сделать Любые предложения о том, как это сделать?

enter image description here

Ответы [ 2 ]

11 голосов
/ 28 июля 2011

Хорошо, наконец, понял! Ура! Вот полный код, если кому-то еще интересно:

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")

enter image description here

и с тем, что было предложено @joran (Большое спасибо!) В комментариях:

ggplot(dat, aes(x=Member, y=Percentage, fill=Percentage)) + geom_bar(stat="identity", colour="white")

enter image description here

4 голосов
/ 28 июля 2011

Ты рядом.Попробуйте

ggplot(dat, aes(x=Member, y=Percentage, fill = factor(Percentage))) + geom_bar(stat = "identity")

, который производит

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...