2013-04-02 16 views
8

Długo szukałem odpowiedzi na ten problem i nie byłem w stanie znaleźć odpowiedzi.Analiza histogramu 2-czynnikowego

Oto problem: Mam data frame z następującymi zmiennymi: natężenie przepływu 1 (CH_SONAR), natężenie przepływu 2 (CH_SONAR_2T), gęstość (CH_DENSITY) i różnica procentowa między dwoma natężeniami przepływu (per_diff). Stworzyłem 5-poziomowy współczynnik dla natężenia przepływu 1 i kolejny 5-poziomowy współczynnik gęstości.

f.factor <- cut(p.pipeline$CH_SONAR_2T, 5, labels = c('Very Low','Low', 'Medium', 'High', 'Very High')) 

d.factor <- cut(p.pipeline$CH_DENSITY, 5, labels = c('Water', 'Very Sparce', 'Sparce', 'Dense', 'Very Dense')) 

Mam kreślone przy użyciu zarówno przy użyciu ggplot2 każdy czynnik jako zmiennej Wypełnienie:

qplot(per_diff, data = p.pipeline, geom = "histogram", binwidth = 1, xlim = c(-5, 15), fill = f.factor) 

qplot(per_diff, data = p.pipeline, geom = "histogram", binwidth = 1, xlim = c(-5, 15), fill = d.factor) 

Teraz chciałbym, aby utworzyć histogram z ggplot który pozwala mi zobaczyć zależność między natężeniem przepływu i gęstości (Woda i bardzo niska, bardzo mała i niska, mała i niska itp. Dla wszystkich 25 możliwych kombinacji). Próbowałem tworzyć nowe czynniki, wiążąc czynnik D i czynnik f z ramą danych, wiążąc oba czynniki razem itd. I bez rezultatów, czy macie jakiś pomysł, jak się do tego podejść?

Próbowałem w tym histogramy, które wyprodukowałem, ale nie sądzę, że mam wystarczająco dużo reputacji, aby to zrobić.

Dzięki za pomoc!

+0

także połączyć swoje obrazy tutaj, jeden z nas może edytować post, aby uzyskać obrazy 'inline'. – Arun

+0

@Arun Właśnie miałem dodać tę samą prośbę, następnie zauważyłem OP powiązany z jej danymi. –

+0

@MatthewPlourde, oops! masz całkowitą rację. usunięte. – Arun

Odpowiedz

10

Można użyć fill=interaction(f.factor, d.factor). Kombinacje, które nie pojawiają się w legendzie, takie jak "Low.Very Sparce" wskazują, że nie ma obserwacji należących do obu tych kategorii.

enter image description here

Jeśli chcesz kolory sąsiadujących poziomów do standout więcej, jedno można zrobić, to wygenerować kolory z rainbow, następnie zamienić każdy inny kolor z jego przeciwieństwem na kole.

col <- rainbow(length(levels(interaction(f.factor, d.factor))), v=.75, s=.5) 
col.index <- ifelse(seq(col) %% 2, 
        seq(col), 
        (seq(ceiling(length(col)/2), length.out=length(col)) %% length(col)) + 1) 
mixed <- col[col.index] 
qplot(per_diff, data = p.pipeline, 
     geom = "histogram", binwidth = 1, xlim = c(-5, 15), 
     fill = interaction(f.factor, d.factor)) + scale_fill_manual(values=mixed) 

enter image description here

+0

Idealny! Dziękuję bardzo, działa jak urok. Dzięki za awanse też mogę publikować zdjęcia teraz :) – amzu

+1

@ChelseaE, dlaczego nie oddajesz głosu w głosowaniu? :) – Arun

+0

@Nie za mało powtórzeń dla tego jeszcze ... :( – amzu