2015-06-13 28 views
7

Spiacente, non ho codice di esempio per questa domanda.Come inserisco più riquadrati grafici nello stesso grafico in R?

Tutto quello che voglio sapere è se è possibile creare più boxplot affiancati in R che rappresentano diverse colonne/variabili all'interno del mio frame di dati. Ogni boxplot rappresenterebbe anche una sola variabile: vorrei impostare la scala y su un intervallo di (0,6).

Se ciò non è possibile, come posso usare qualcosa come l'opzione del pannello in ggplot2 se voglio solo creare un boxplot usando una singola variabile? Grazie!

Idealmente, voglio qualcosa come l'immagine qui sotto, ma senza raggruppamento di fattori come in ggplot2. Ancora una volta, ogni grafico a scatole rappresenterebbe colonne completamente separate e singole.

enter image description here

risposta

5

ggplot2 richiede che i dati da tracciare sulle y dell'asse sta tutto in uno colonna.

Ecco un esempio:

set.seed(1) 
df <- data.frame(
    value = runif(810,0,6), 
    group = 1:9 
) 

df 

library(ggplot2) 
ggplot(df, aes(factor(group), value)) + geom_boxplot() + coord_cartesian(ylim = c(0,6) 

enter image description here

I ylim(0,6) set l'asse y per essere tra 0 e 6

Se i dati sono in colonne, è possibile entrare in la forma lunga che utilizza melt da reshape2 o gather da tidyr. (anche altri metodi disponibili).

+2

NOTA: per ggplot2 'ylim()' fornisce sottoinsiemi dati per la visualizzazione di grafici a scatole. usa 'coord_cartesian (ylim =)' invece –

+1

@AaronKatch buona cattura (se si scusa il gioco di parole) – jalapic

+0

Grazie, @jalapic! Quindi mi sono liquidato usando tidyr e ggplot2 come consigliato: 'long <- gather (team1, variable, value, var1: var44) ggplot (long, aes (factor (variable), value)) + geom_boxplot() + coord_cartesian (ylim = c (0,6)) 'ma finì con questa strana trama: http://tinypic.com/r/261z0qg/8. Suppongo di avere troppe variabili per far sembrare questo abbastanza ragionevole; in questo caso, ci sono delle opzioni per ridimensionare, o dovrei semplicemente rinunciare e usare i grafici del pannello? Grazie ancora! – poeticpersimmon

5

È possibile farlo se si reshape i dati in formato lungo

## Some sample data 
dat <- data.frame(a=rnorm(100), b=rnorm(100), c=rnorm(100)) 

## Reshape data wide -> long 
library(reshape2) 
long <- melt(dat) 
plot(value ~ variable, data=long) 

enter image description here

+0

Grazie, @LegalizeIt! Ho finito per usare tidyr per rimodellare i miei dati in un lungo df: 'library (tidyr) lungo <- gather (team1, variabile, valore, var1: var44) plot (valore ~ ​​variabile, data = long)' ma terminato con questa strana trama: http://tinypic.com/r/2rn77no/8 ... Dato che ho 40+ grafici che sto cercando di stringere insieme, è il mio obiettivo originale? In tal caso, potrei passare ai grafici del pannello. – poeticpersimmon