2017-09-27 6 views
-1

Warum nicht der Ausweichen-Parameter mehrere Bars für jede Gruppe erstellen? Ich war auf der Suche nach einem gruppierten Bargrundstück, nicht nach dem gestapelten, das ich bekam.ggplot ausweichen nicht gruppieren bars

df<-data.frame(c(40,23,18,41,15,14,38,21,1),c(rep("Do you agree with \nthe 'Hands Up' protestors ?",3),rep("Have the Police alienated themselves\n from the Public?",3),rep("Are the public ignoring the\n dangers Police face everyday?",3)),c("49%","28%","22%","59%","21%","20%","63%","35%","2%"),c(1,1,1,2,2,2,3,3,3)) 
colnames(df)<-c("values","names","percentages","group") 



ggplot(df,aes(names,values,group=group))+ 
    geom_bar(stat = "identity",position = "dodge",fill=rep(c("green","red","orange"),3))+ 
    geom_text(aes(label=percentages))+ 
    ylab("number of votes")+ 
    xlab("")+ 
    ggtitle("Police Opinion polls") 

Meine Ergebnisse:

enter image description here

Was ich will:

enter image description here

Antwort

4

Ich denke, eine Spalte in Ihrer Datenrahmen müssen, die tatsächlich unterscheidet, was die verschiedenen Werte (Ich habe eine Vermutung gemacht). Dann Karte, die Spalte in der Füllung innerhalb einer ästhetischen aes() Forderung nach ggplot richtig den Werten auszuweichen:

df$response = rep(c("Yes", "No", "Unsure"), 3) 

dodger = position_dodge(width = 0.9) 
ggplot(df,aes(names,values, fill = response))+ 
    geom_bar(stat = "identity",position = dodger)+ 
    geom_text(aes(label=percentages), position = dodger)+ 
    ylab("number of votes")+ 
    xlab("")+ 
    ggtitle("Police Opinion polls") 

Die dodger = position_dodge(width = 0.9) Leitung benötigt wird, da geom_text ausgewichen werden muss manuell mit einer festgelegten Breite.

+0

Ich testete Ihren Code, Bit bekam nicht die gruppierte Bar-Plot, die ich suchte. Ich habe meinen Code mit einem Beispiel aktualisiert. Ich entschuldige mich, wenn meine Anfrage unklar war. – Rilcon42

+2

Ich habe die von Ihnen geposteten Beispieldaten verwendet, den Code in meiner Antwort hinzugefügt und ein ausgewichenes Balkendiagramm erhalten. Kannst du erklären, was für ein * Ergebnis * du von meinem Code mit den Beispieldaten bekommst, damit ich herausfinden kann, wo es falsch läuft? – Marius

+0

Mein Fehler- Ich habe nicht bemerkt, dass wir zwei verschiedene Spalten für die Antwort df $ verwenden. Ich habe es von der Variable 'group' abgeleitet, während Sie' response' verwendet haben – Rilcon42