Alexandra, miembro de este equipo, nos ha hecho el favor de redactar esta reseña porque controla perfectamente dicho tema.
Solución:
Aquí hay una forma de usar gráficos 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')
Para hacer esto en ggplot2
tratar:
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))
Obviamente, puede ajustar los argumentos de ancho y alto de position_jitter()
a tu gusto (aunque te recomiendo height=0
ya que la fluctuación de altura hará que su gráfico sea inexacto).
He escrito una función R llamada spreadPoints() dentro de un paquete basiclotteR
. El paquete se puede instalar directamente en su biblioteca R usando el siguiente código:
install.packages("devtools")
library("devtools")
install_github("JosephCrispell/basicPlotteR")
Para el ejemplo proporcionado, utilicé el siguiente código para generar la figura de ejemplo a continuación.
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
spreadPointsMultiple(data=ddf, responseColumn="NUMS", categoriesColumn="GRP",
col="blue", plotOutliers=TRUE)
Es un trabajo en progreso (¡la falta de fórmula como entrada es torpe!) pero proporciona un método no aleatorio para distribuir puntos en el eje X que funciona como un violín como un resumen de los datos. Eche un vistazo al código fuente, si está interesado.
Sección de Reseñas y Valoraciones
No se te olvide dar difusión a este post si te valió la pena.