2012-07-05 15 views
5

Tengo un problema para el que no he podido encontrar una solución. Tengo un marco de datos con diferentes adjetivos y participios que se encuentran en dos patrones diferentes.Ordenar dos histogramas en la misma parcela 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 ... 

que desea representar los adjetivos de estos dos patrones en la disminución de la frecuencia utilizando dos histogramas en la misma parcela. El problema es que hay cierta superposición entre los dos (es decir, se encuentran algunos adjetivos en ambos patrones), pero solo quiero que cada histograma comience con el adjetivo más frecuente.

Aquí está el código que he utilizado para la clasificación cuando se produce histogramas individuales:

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

entiendo por qué esto no funciona ya que combina la frecuencia de los dos patrones pero todavía Don' Sé cómo resolverlo. He intentado reordenar() sin suerte. ¿Algunas ideas?

Aquí está el código que estoy usando para 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")) 

El problema con la trama resultante es que los adjetivos no están ordenadas estrictamente por sus respectivas frecuencias en los dos patrones. ¿Alguien puede ayudarme con esto?


Entonces, aquí está el gráfico que he creado con el código anterior. Lo que quiero en cambio es que los adjetivos para cada patrón se tracen en orden decreciente, es decir, que ambos histogramas se trazan en orden decreciente por frecuencia. Supongo que esto se reduce a una pregunta de clasificación, y he tratado de ordenar los factores de diferentes maneras, pero no he podido hacerlo primero por PATTERN y dentro de eso por la frecuencia del NODO. enter image description here

+0

que cree que puede tener para resumir los datos antes de la mano para poder utilizar de reordenación() –

Respuesta

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

Esto no parece funcionar tan solo me dan una barra para cada patrón (incluso después de corregir el error tipográfico en reordenar() y cambiar a geom_histogram()). He editado la publicación para mostrar qué tipo de gráfico quiero crear. – user1504579

+0

Posición añadida = "esquivar". Aunque, no está muy claro a qué se parecen sus datos. Tal vez algo como 'head (THAT_EXT_COMBINED)' sería útil. –

+0

He editado la publicación para incluir información sobre la estructura de los datos. Tal como lo veo, se trata de cómo ordenar los factores primero por PATRÓN y luego por la frecuencia del NODO dentro de los dos PATRONES. – user1504579

Cuestiones relacionadas