studio - Agregar una línea de tendencia lm simple a un diagrama de caja ggplot
paquete ggplot2 (2)
El mensaje de error es bastante autoexplicativo: agregue aes(group=1)
a geom_smooth
:
ggplot(iris, aes(factor(Sepal.Length), Sepal.Width)) +
geom_boxplot() +
geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1))
Cuando agrego una línea de tendencia de modelo lineal a un diagrama de caja usando gráficos R estándar, uso:
boxplot(iris[,2]~iris[,1],col="LightBlue",main="Quartile1 (Rare)")
modelQ1<-lm(iris[,2]~iris[,1])
abline(modelQ1,lwd=2)
Sin embargo, al usar esto en ggplot2:
a <- ggplot(iris,aes(factor(iris[,1]),iris[,2]))
a + geom_boxplot() +
geom_smooth(method = "lm", se=FALSE, color="black", formula=iris[,2]~iris[,1])
Obtuve el siguiente error:
geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)?
Y la línea no aparece en mi trama.
Los modelos utilizados en ambos escenarios son idénticos. Si alguien pudiera señalar dónde me voy mal, sería genial.
EDITAR: utiliza el conjunto de datos del iris como ejemplo.
Para su información, este error también puede encontrarse (y solucionarse) usando la sencilla interfaz ggplot2
para ggplot2
El mensaje de error no es lo suficientemente explicativo para al menos algunas personas :-). En este caso, la clave es incluir solo los contenidos de la estética sugerida.
library(ggplot2)
qplot(factor(Sepal.Length), Sepal.Width, geom = c("smooth"), data= iris)
# error, needs aes(group=1)
qplot(factor(Sepal.Length), Sepal.Width, geom = c("smooth"), group = 1, data= iris)