2012-09-14 18 views
6

Ho dati nel seguente formato:Come stampare plot multipli in un grafico?

# repetition, packet, route, energy level 
    1, 1, 1, 10.0 
    1, 1, 2, 12.3 
    1, 1, 3, 13.8 
    1, 2, 1, 9.2 
    1, 2, 2, 10.1 
    1, 2, 3, 11.2 
    ... 
    50,99,3, 0.01 

Ora, voglio creare un grafico che mostra trame box a tratta per pacchetto su tutte le ripetizioni. Quindi, per esempio l'asse x raffigurerebbe i pacchetti e l'asse y il livello di energia. La prima graduazione sul ascisse mostrerebbe piazzole tre box che contengono dati di tre sottoinsiemi

subset(data, data$packet == 1 & data$route == 1) 
    subset(data, data$packet == 1 & data$route == 2) 
    subset(data, data$packet == 1 & data$route == 3) 

e così via. Sto usando ggplot2 e mi chiedo se devo creare ogni volta un boxplot e provare ad aggiungerli in uno o se c'è un modo intelligente per farlo?

Grazie in anticipo! M.

+2

'boxplot (y ~ x)' creerà parallelamente riquadri per una variabile 'y', raggruppata in base ai valori univoci per' x' ma, trattandosi di una questione puramente di programmazione, qui è fuori tema, quindi Ho votato per chiudere e migrare allo stackoverflow. – Macro

+0

È un po 'più complicato. Non è solo una variabile y (energia) rispetto a x (percorso) ma anche pacchetti (?). –

risposta

8

Se si utilizza ggplot2, sarà possibile farlo abbastanza bene con facet_wrap, che può creare più boxplots uno accanto all'altro. Per esempio:

library(ggplot2) 
mydata = data.frame(x=as.factor(rep(1:2, 5, each=5)), y=rnorm(50), 
     division=rep(letters[1:5], each=10)) 

print(ggplot(mydata, aes(x, y)) + geom_boxplot() + facet_wrap(~division)) 

enter image description here

Nel caso del codice, si guarda come si potrebbe in realtà vuole dividere per due variabili (che è un po 'poco chiaro). Se si vuole dividerlo per percorso e poi dal pacchetto (come il tuo esempio sembra suggerire) è possibile utilizzare facet_grid:

print(ggplot(data, aes(repetition, energy.level)) + geom_boxplot() + facet_grid(route ~ packet)) 

Si noti tuttavia che dal momento che si dispone di 99 pacchetti di questo finirebbe per essere ampia 99 grafici, quindi probabilmente vorrai provare un approccio diverso.

Problemi correlati