2013-02-11 1 views
17

Próbuję replikować wykres podobny do następującego (pierwotnie znaleźć HERE)
stacked histogramsDziałka nad histogramy zmiennych czynników

To koncepcyjnie proste, ale jestem trochę zakłopotany, jak to zrobić w R.
Podsumowując: Chcę generować histogramy częstotliwości behawioralnej w ciągu 24 godzin dziennie (24-poziomowa zmienna czynnikowa) każdego dnia tygodnia. Następnie chcę ułożyć te histogramy jeden na drugim, aby rozkład zachowań w ciągu godziny dnia był łatwy do porównania (ponownie, zobacz przykład).

Na przykład, moje dane mogą wyglądać następująco:

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 

Jak mogę iść o wdrażaniu wykres w linku powyżej? Jestem okropny z ggplot, ale mam wrażenie, że to prawdopodobne rozwiązanie. Dzięki!

Odpowiedz

29

Coś takiego?

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

Nailed go. @Arun, jesteś najlepszy. – roody

+0

Szybkie pytanie. Kiedy faktycznie robię to z moimi danymi, dostaję pewne luki w osi X. Dodaję powyższy obrazek. – roody

+0

Nie, są 24 różne paski. Myślę, że problem polega na tym, że binwidths jest ustawiony na 30 ... Ale nie wiem, gdzie umieścić ten fragment kodu! – roody