2012-07-05 14 views
5

Mam problem, na który nie mogłem znaleźć rozwiązania. Mam ramkę danych z różnymi przymiotnikami i imiesłowami, które można znaleźć w dwóch różnych wzorach.Zamawianie dwóch histogramów na tym samym wykresie za pomocą ggplot

head(THAT_EXT_COMBINED) 
      ID PATTERN   NODE 
1 HRE_721_03 THAT_EXT  accepted 
2 G08_1321_01 THAT_EXT acknowledged 
3 AAW_47_03 THAT_EXT acknowledged 
4 G20_1490_01 THAT_EXT  alarming 
5 FY8_732_02 THAT_EXT  amazing 
6 HEM_128_03 THAT_EXT  amazing 

str(THAT_EXT_COMBINED) 
'data.frame': 1450 obs. of 3 variables: 
$ ID  : Factor w/ 1450 levels "A05_253_01","A05_277_07",..: 1109 827 265 853 812 1046 369 810 214 41 ... 
$ PATTERN: Factor w/ 2 levels "THAT_EXT","THAT_POST": 1 1 1 1 1 1 1 1 1 1 ... 
$ NODE : Factor w/ 201 levels "accepted","acknowledged",..: 1 2 2 6 8 8 8 10 12 15 ... 

Chcę wykreślić przymiotniki tych dwóch wzorów w malejącej częstotliwości za pomocą dwóch histogramów na tym samym wykresie. Problem polega na tym, że niektóre z nich zachodzą na siebie (tzn. Niektóre przymiotniki występują w obu wzorcach), ale chcę, aby każdy histogram zaczynał się od najczęstszego przymiotnika.

Oto kod, który używam do sortowania przy produkcji pojedynczych histogramy:

THAT_EXT_COMBINED <- within(THAT_EXT_COMBINED, 
          NODE <- factor(NODE, 
              levels=names(sort(table(NODE), 
                  decreasing=TRUE)))) 

rozumiem dlaczego to nie działa, ponieważ łączy częstotliwość dwóch wzorów, ale nadal don” t wiedzą, jak to rozwiązać. Próbowałem reorder() bez szczęścia. Jakieś pomysły?

Oto kod używam do działki:

graph<-ggplot(THAT_EXT_COMBINED, aes(x=NODE, fill=PATTERN)) + 
geom_histogram(binwidth=.5, position="dodge") 
graph + opts(axis.text.x = theme_blank()) + #removes text labels on x-axis 
scale_y_continuous("Frequency") + 
scale_x_discrete("Adjectives",breaks=NULL)+ 
opts(title = expression("Distribution of Adjectives")) 

Problem z otrzymanego wykresu jest to, że przymiotniki nie są ściśle uporządkowane według odpowiednich częstotliwości w dwóch wzorach. Czy ktoś może w tym pomóc?


Oto wykres, który utworzyłem za pomocą powyższego kodu. Zamiast tego chciałbym, aby przymiotniki dla każdego wzoru były drukowane w porządku malejącym, tj. Aby oba histogramy były drukowane w porządku malejącym według częstotliwości. Sądzę, że sprowadza się to do pytania o sortowanie i próbowałem uporządkować te czynniki na różne sposoby, ale nie byłem w stanie zrobić tego najpierw przez WZORZEC i w ramach częstotliwości NODE. enter image description here

+0

myślę, że może trzeba podsumować swoje dane przed strony, aby móc korzystać zamówić urządzenia() –

Odpowiedz

0
library(reshape) 
df <- cast(THAT_EXT_COMBINED, PATTERN ~.) 
colnames(df)[2] <- "Counts" 

ggplot(df, aes(reorder(PATTERN, Counts), Counts, fill=PATTERN)) 
    + geom_bar(position="dodge") # + ... 
+0

To nie wydają się działać jak mam tylko jedną poprzeczkę dla każdego wzoru (nawet po skorygowaniu literówkę w zmianie kolejności() i zmianie na geom_histogram()). Edytowałem post, aby pokazać, jaki rodzaj działki chcę utworzyć. – user1504579

+0

Dodano pozycję = "dodge". Chociaż nie jest jasne, jakie dane "wyglądają". Być może pomocne byłoby coś w rodzaju 'head (THAT_EXT_COMBINED)'. –

+0

Edytowałem post, aby zawrzeć informacje na temat struktury danych. Jak widzę, chodzi o to, jak uporządkować czynniki najpierw za pomocą PATTERN, a następnie poprzez częstotliwość NODE w ramach dwóch WZORÓW. – user1504579

Powiązane problemy