2012-07-05 13 views
5

Ho un problema per il quale non sono stato in grado di trovare una soluzione. Ho una cornice dati con diversi aggettivi e participi che si trovano in due modelli diversi.Ordinare due istogrammi nello stesso grafico con 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 ... 

voglio tracciare gli aggettivi di questi due modelli con frequenza decrescente utilizzando due istogrammi nello stesso appezzamento. Il problema è che c'è una certa sovrapposizione tra i due (cioè alcuni aggettivi si trovano in entrambi i modelli) ma voglio solo che ogni istogramma inizi con l'aggettivo più frequente.

Ecco il codice che ho utilizzato per lo smistamento durante la produzione di singoli istogrammi:

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

capisco perché questo non funziona in quanto unisce la frequenza dei due modelli, ma ho ancora don' so come risolverlo Ho cercato di riordinare() senza fortuna. Qualche idea?

Ecco il codice che sto utilizzando per la trama:

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")) 

Il problema con la trama che ne risulta è che gli aggettivi non sono strettamente in ordine di loro rispettiva frequenza nei due modelli. Qualcuno può aiutare con questo?


Quindi, ecco il grafico che ho creato con il codice sopra. Quello che voglio invece è che gli aggettivi per ciascun pattern sono tracciati in ordine decrescente, cioè che entrambi gli istogrammi sono tracciati in ordine decrescente per frequenza. Immagino che questo si risolva in una domanda di smistamento, e ho cercato di ordinare i fattori in modi diversi ma non sono stato in grado di farlo prima per PATTERN e all'interno per frequenza del NODE. enter image description here

+0

penso che potrebbe essere necessario riepilogare i dati prima di mano per essere in grado di utilizzare riordino() –

risposta

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

Questo non sembra funzionare come Ho solo una barra per ciascun modello (anche dopo aver corretto l'errore di battitura in riordino() e passando a geom_histogram()). Ho modificato il post per mostrare quale tipo di trama voglio creare. – user1504579

+0

Posizione aggiunta = "schivata". Anche se, non è chiaro quale sia il tipo di dati ". Forse qualcosa come 'head (THAT_EXT_COMBINED)' sarebbe utile. –

+0

Ho modificato il post per includere informazioni sulla struttura dei dati. Per come la vedo io, si tratta di come ordinare i fattori prima da PATTERN e poi dalla frequenza del NODO all'interno dei due PATTERN. – user1504579

Problemi correlati