Вопрос по r, ggplot2 – Добавление простой линии тренда lm в блок-график ggplot

16

Когда я добавляю линию тренда линейной модели к блокпосту с использованием стандартной графики 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: Использовал набор данных радужной оболочки в качестве примера.

Ваш Ответ

2   ответа
23

Добавить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))

А, ладно, я не знал, что формулу нужно заменить на нее. Спасибо за решение этого. JPD
Pet peeve: «сообщение об ошибке самоочевидно». Если бы это было само собой разумеющимся, ОП не задавал бы вопрос с самого начала. Twitch
Отметьте, что я не «заменил» формулу. Формула не была необходима, поэтому я удалил ее. Andrie
1

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)

Похожие вопросы