Domanda Come aggiungere boxplots a scatterplot con jitter


Sto usando i seguenti comandi per produrre uno 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 boxplots 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.


18
2018-05-15 10:33


origine


risposte:


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


32
2018-05-15 11:51



Per farlo 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 gli argomenti di larghezza e altezza di position_jitter() a proprio piacimento (anche se lo consiglierei height=0 dato che l'altezza del jittering renderà inaccurata la tua trama).


20
2018-05-15 16:53