2016-06-30 12 views
0

Ich habe eine Daten-Datei, die ungefähr so ​​aussieht ...R ggplot: stat = „Identität“ funktioniert nicht aus irgendeinem Grund

Rate <- runif(14, 0, 20) 
Day <- c("Sunday", "Monday", "Tuesday", 
     "Wednesday", "Thursday", "Friday", "Saturday", 
     "Sunday", "Monday", "Tuesday", 
     "Wednesday", "Thursday", "Friday", "Saturday") 
Grouper <- c(rep(1, 7), rep(2, 7)) 
df <- data.frame(Rate, Day, Grouper) 

... und ich möchte ein Balkendiagramm mit zwei Bars machen für jeden Tag: eine Bar für Grouper = 1 und eine Bar für Grouper = 2. Der y-Wert ist kein Graf, es ist die Rate Variable, also muss ich stat = "identity" verwenden, um es ...

# Set max chart height 
maxlimit = max(df$Rate) * 1.1 
# Actual plot code 
ggplot(df, aes(Day, Rate)) + 
    geom_bar(stat = "identity") + 
    geom_bar(aes(fill = Grouper), position = "dodge") + 
    scale_y_continuous(limits = c(0, maxlimit)) + 
    theme_classic() 

funktioniert ... aber ich bin immer noch der Fehler immer stat_count() must not be used with a y aesthetic. Kann mir jemand erklären, Warum bekomme ich diesen Fehler und was kann ich tun, um es zu beheben?

+3

Sie die geom zweimal anrufen und der Standard nicht zum zweiten Mal ändern. – Roland

+0

Ah, verstanden. Ich dachte, ich würde dem Stil folgen, der in der ggplot2-Dokumentation eingerichtet wurde, aber ich lag falsch. – mmyoung77

Antwort

1

Mein Fehler rief zweimal geom_bar. Ich dachte, ich sollte das tun, aber ich habe mich geirrt; der zweite Anruf gerade neu setzt die geom_bar Einstellungen, so dass das Gespräch zu stat=identity. Löschen Dieser Code funktioniert:

ggplot(TSdata, aes(Day, Rate, group = Grouper, col = Grouper)) + 
    geom_bar(stat = "identity", aes(fill = Grouper), position = "dodge") + 
    scale_y_continuous(limits = c(0, maxlimit)) + 
    theme_classic() 
Verwandte Themen