2013-06-25 11 views
8

Mi piacerebbe sapere come ottenere 9 plot di raggruppamento barra (3x3) insieme.ggplot barra di raggruppamento multipla

mio CSV: data <- read.csv("http://pastebin.com/raw.php?i=6pArn8GL", sep = ";")

Le 9 trame dovrebbero essere groupes secondo "Tipo" A alla I.

Poi ogni grafico a barre raggruppato dovrebbe avere la frequenza sull'asse y, l'asse x è raggruppato per 1 pce a 6 pce e subdiviato per anno.

Ho il seguente esempio in Excel (immagine) e vorrei creare lo stesso risultato su r con ggplot. È possibile?

Grazie

enter image description here

risposta

22

Prima, rimodellare i dati da largo a formato esteso.

library(reshape2) 
df.long<-melt(df,id.vars=c("ID","Type","Annee")) 

Avanti, come durante l'importazione dei dati lettera X viene aggiunto a nomi di variabili a partire dal numero, rimuoverla con substring().

df.long$variable<-substring(df.long$variable,2) 

Ora usare variable come x, y value come, Annee per riempimento e geom_bar() per ottenere barplot. Con facet_wrap() puoi dividere i dati per Type.

ggplot(df.long,aes(variable,value,fill=as.factor(Annee)))+ 
    geom_bar(position="dodge",stat="identity")+ 
    facet_wrap(~Type,nrow=3) 

enter image description here

+1

Ciao grazie è impressionante, ma dalla mia parte ottengo un messaggio di errore di errore in layout_base (data, vars, drop = drop): Almeno uno strato deve contenere tutte le variabili utilizzate per il facetting – S12000

+0

@ Swiss12000 Stai usando il codice esattamente allo stesso modo del mio codice? In caso contrario, aggiungi il codice che utilizzi nella tua domanda. –

+0

infatti ho bisogno di un errore è perfettamente funzionante grazie per il vostro aiuto. Ho il libro di cucina R Graphics per imparare ggplot ma non menzionano come fare un grafico più complesso. Hai imparato un po 'tutti i giorni un po' o hai letto libri avanzati? – S12000

10

Utilizzando @Didzis rimodellato i dati, ecco una versione reticolo:

barchart(value~variable|Type, 
     groups=Annee,data=df.long,layout=c(3,3), 
     between=list(3,3), 
     axis=axis.grid, 
     auto.key=TRUE) 

enter image description here