2014-05-15 30 views
16

sto usando i seguenti comandi per produrre un grafico a dispersione con jitter:Come aggiungere i grafici a scatole per Scatterplot con jitter

ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T)) 
library(lattice) 
stripplot(NUMS~GRP,data=ddf, jitter.data=T) 

voglio aggiungere grafici a scatole su questi punti (uno per ogni gruppo). Ho provato a cercare ma non sono in grado di trovare il codice che traccia tutti i punti (e non solo i valori anomali) e il jitter. Come posso risolvere questo. Grazie per l'aiuto.

+1

Deve essere reticolo? Altrimenti prova sth come 'con (ddf, {boxplot (NUMS ~ GRP); punti (jitter (as.numeric (GRP)), NUMS, col = rgb (0,0,0, .2), cex = .5, pch = 19)}) '. – lukeA

+0

È preferibile utilizzare la grafica di base. La tua soluzione funziona molto bene. Grazie. – rnso

+0

Questo può essere fatto con ggplot2? Ho provato {ggplot (ddf, aes (x = GRP, y = NUMS)) + geom_boxplot() + geom_jitter()} ma produce troppa dispersione - il jitter potrebbe essere inferiore? – rnso

risposta

27

Ecco un modo utilizzando la grafica di base.

boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS') 
stripchart(NUMS ~ GRP, vertical = TRUE, data = ddf, 
    method = "jitter", add = TRUE, pch = 20, col = 'blue') 

enter image description here

+0

Sì, funziona molto bene. Grazie. Stavo provando stripplot seguito da boxplot e non funzionava. – rnso

+2

L'argomento 'add = TRUE' è la chiave. :) –

+0

add = T solo potrebbe non essere sufficiente poiché {stripplot (NUMS ~ GRP, data = ddf, jitter = T); boxplot (NUMS ~ GRP, data = ddf, add = T)} non funziona; a quanto pare uno ha bisogno di mettere una "trama" prima seguita da punti o grafici. – rnso

17

Per fare questo in ggplot2, provare:

ggplot(ddf, aes(x=GRP, y=NUMS)) + 
    geom_boxplot(outlier.shape=NA) + #avoid plotting outliers twice 
    geom_jitter(position=position_jitter(width=.1, height=0)) 

ggplot2 version of boxplot + jitter

Ovviamente è possibile regolare la larghezza e l'altezza argomenti del position_jitter() a proprio piacimento (anche se io' d raccomando height=0 dato che il jitter ad altezza renderà inaccurata la tua trama).

Problemi correlati