2013-02-11 14 views
17

Ich versuche, die grafische Darstellung ähnlich den folgenden
(ursprünglich HERE gefunden) stacked histogramsPlot Histogramme über Faktorvariablen

zu replizieren Es ist konzeptionell einfach, aber ich bin ein wenig ratlos, wie es zu tun in R.
Zusammenfassend: Ich möchte Histogramme der Verhaltensfrequenz über die 24 Stunden des Tages (24-Level-Faktor-Variable) an jedem Wochentag erstellen. Dann möchte ich diese Histogramme übereinander stapeln, so dass die Verteilung des Verhaltens über die Stunde des Tages leicht verglichen werden kann (siehe auch Beispiel).

Zum Beispiel könnte meine Daten wie folgt aussehen:

weekday hour count 
    Tuesday 15  553 
    Monday 1  53 
    Monday 10  539 
    Monday 15  629 
    Tuesday 9  281 
Saturday 4  11 
    Monday 3  20 
    Sunday 3  10 
    Sunday 7  2 
    Sunday 2  17 

Wie gehe ich über über die Grafik in der Verbindung zu implementieren? Ich bin schrecklich mit ggplot, aber habe ein Gefühl, es ist die wahrscheinliche Lösung. Danke!

Antwort

29

So ähnlich?

set.seed(1234) 
df <- data.frame(weekday=rep(sort(unique(weekdays(.leap.seconds))), each=24), 
         hour=rep(1:24, 7), count=sample(2:600, 24*7, replace=T)) 

df$weekday <- factor(df$weekday, levels=c("Monday", "Tuesday", "Wednesday", 
         "Thursday", "Friday", "Saturday", "Sunday"), ordered=T) 
df$hour <- factor(df$hour) 

require(ggplot2)  
p <- ggplot(data = df, aes(x=hour)) 
p <- p + geom_histogram(aes(weights=count, fill=weekday)) 
p <- p + scale_fill_brewer(palette="Set3") 
p <- p + facet_wrap(~ weekday, ncol=1) 
p 

ggplot2_facet_histogram

+1

es genagelt. @Arun, du bist der Beste. – roody

+0

Schnelle Frage. Wenn ich das mit meinen Daten mache, bekomme ich Lücken in der X-Achse. Ich füge das obige Bild hinzu. – roody

+0

Nein, es gibt 24 verschiedene Bars. Ich denke, das Problem ist, dass Binwidths auf 30 gesetzt wird .... Aber ich weiß nicht, wo ich das Snippet platzieren soll! – roody

Verwandte Themen