2012-08-23 16 views
5

Tengo uno bueno. He estado pensando en esto hace mucho tiempo. Tengo este conjunto de datos y este conjunto de datos podría ser enorme. Me gustaría graficar una barra de pila ggplot basada en los 5 mejores recuentos de sugerencias para cada mes. Por ejemplo, durante 1 // 1/2012, los recuentos higest serían I, G, H, D y E.ggplot para apilar el gráfico de barras 5 principales para cada mes

df

Date Desc count 
1/1/2012 A 10 
1/1/2012 B 5 
1/1/2012 C 7 
1/1/2012 D 25 
1/1/2012 E 19 
1/1/2012 F 30 
1/1/2012 G 50 
1/1/2012 H 10 
1/1/2012 I 100 
2/1/2012 A 10 
2/1/2012 B 5 
2/1/2012 C 7 
2/1/2012 D 25 
2/1/2012 E 19 
2/1/2012 F 30 
2/1/2012 G 50 
2/1/2012 H 10 
2/1/2012 I 100 
3/1/2012 A 1 
3/1/2012 B 4 
3/1/2012 C 5 
3/1/2012 D 6 
3/1/2012 E 6 
3/1/2012 F 7 
3/1/2012 G 8 
3/1/2012 H 5 
3/1/2012 I 10 

tengo algo como esto, pero esto gráficos de todos los valores :

ggplot(df, aes(Date, count))+ geom_bar(aes(fill=Desc), stat="identity", position="stack") + theme_bw() 

Respuesta

4

tienes que subconjunto de los datos en primer lugar:

library(plyr) 
library(ggplot2) 
df_top <- ddply(df, .(Date), 
       function(x) head(x[order(x$count, decreasing = TRUE),], 5)) 
ggplot(df_top, aes(Date, count))+ 
    geom_bar(aes(fill=Desc), stat="identity", position="stack") + 
    theme_bw() 

enter image description here

+0

No obtengo el mismo resultado, ¿cómo está obteniendo x? – user1471980

+0

¿Qué quieres decir? ¿La función anónima que hice? –

Cuestiones relacionadas