Ответ 1
Сообщение об ошибке в значительной степени самоочевидно: добавьте aes(group=1)
в geom_smooth
:
ggplot(iris, aes(factor(Sepal.Length), Sepal.Width)) +
geom_boxplot() +
geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1))
При добавлении линейной линии тренда модели к ящику с использованием стандартной графики R я использую:
boxplot(iris[,2]~iris[,1],col="LightBlue",main="Quartile1 (Rare)")
modelQ1<-lm(iris[,2]~iris[,1])
abline(modelQ1,lwd=2)
Однако при использовании этого в 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])
Я получаю следующую ошибку:
geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)?
И строка не появляется на моем сюжете.
Модели, используемые в обоих этих сценариях, идентичны. Если бы кто-нибудь мог указать, где я ошибаюсь, это было бы здорово.
EDIT: в качестве примера используется набор данных диафрагмы.
Сообщение об ошибке в значительной степени самоочевидно: добавьте aes(group=1)
в geom_smooth
:
ggplot(iris, aes(factor(Sepal.Length), Sepal.Width)) +
geom_boxplot() +
geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1))
FYI, эта ошибка также может быть встречена (и исправлена), используя простой интерфейс qplot
для ggplot2
Сообщение об ошибке недостаточно для нескольких людей:-). В этом случае ключ должен включать только содержимое предлагаемого эстетического
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)