2017-09-29 4 views
0

Ich bin ganz neu zu R und brauche Hilfe bei der Manipulation meiner Grafik. Ich versuche, tatsächliche und prognostizierte Zahlen zu vergleichen, kann aber die Farben der Legenden nicht richtig erfassen. Die Daten sieht wie folgt aus:Färbung Legende in Balkendiagramm in R

hierarchy Actual Forecast 
    <fctr>  <dbl>  <dbl> 
1   E  9313  5455 
2   K  6257  3632 
3   O  7183  8684 
4   A  1579  6418 
5   S  8755  0149 
6   D  5897  7812 
7   F  1400  8810 
8   G  4960  5710 
9   R  3032  0412 

Und der Code sieht wie folgt aus:

ggplot(sam4, aes(hierarchy))+ theme_bw() + 
    geom_bar(aes(y = Actual, colour="Actual"),fill="#66FF33", stat="identity",position="dodge", width=0.40) + 
    geom_bar(aes(y = Forecast, colour="Forecast"), fill="#FF3300", stat="identity",position="dodge", width=0.2) 

Die Grafik sieht letzten Endes wie folgt aus:

enter image description here

+1

Sie werden bewegen müssen 'fill' innerhalb von' aes' die Legende auf die gleiche Art und Weise beeinflussen Sie 'color' haben in' aes', und legen Sie Farben füllen über ' scale_fill_manual' – aosmith

+0

@aosmith - danke für Ihre Hilfe. Ich habe das so gemacht:'ggplot (sam4, aes (x = Hierarchie)) + theme_bw() + geom_bar (aes (y = Aktuell, color = "Actual", fill = "# 66FF33") stat = "identity ", position =" ausweichen ", width = 0.40) + geom_bar (aes (y = Vorhersage, color =" Forecast ", fill =" # FF3300 ") stat =" Identität ", position =" Ausweichen ", width = 0.2) + scale_fill_manual (Werte = c (Actual = "# 66FF33", Forecast = "# FF3300")) 'Aber kein Erfolg. Irgendwelche Ideen. –

+0

Die Verwendung von "Actual" und "Forecast" für "fill" in "aes" sollte genauso wie bei "colour" mit dem Code in Ihrem Kommentar funktionieren. Wenn Sie möchten, dass Ihre Farben mit "fill" übereinstimmen, können Sie auch "scale_color_manual" verwenden. Dann können Sie die Namen der beiden Skalen auch gleich einstellen. – aosmith

Antwort

1

Ich glaube, Ihr Problem ist, dass Ihre Daten sind nicht gut formatiert, um ggplot zu verwenden. Sie möchten zuerst Ihren Datenrahmen aufräumen. Sehen Sie sich http://tidyr.tidyverse.org/ an, um sich mit dem Konzept sauberer Daten vertraut zu machen.

Mit dem Tidyverse (ggplot ist ein Teil davon), habe ich Ihre Daten aufgeräumt und ich glaube, dass Sie die gewünschte Plot haben.

library(tidyverse) #includes ggplot 
newdata <- gather(sam4, actualorforecast, value, -hierarchy) 
ggplot(newdata, aes(x = hierarchy)) + 
    theme_bw() + 
    geom_bar(aes(y = value, fill = actualorforecast), 
      stat = "identity", 
      width = ifelse(newdata$actualorforecast == "Actual", .4, .2), 
      position = "dodge") + 
    scale_fill_manual(values= c(Actual ="#66FF33", Forecast="#FF3300")) 

enter image description here

+0

Vielen Dank für Ihre Hilfe. –

Verwandte Themen