添加一个简单的LM趋势线的ggplot箱线图(Adding a simple lm trend li

2019-06-25 06:31发布

当使用标准的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)?

并线不会出现在我的阴谋。

在这两种情况中使用的模型是相同的。 如果有人能指出我要去哪里错了,那将是巨大的。

编辑:使用的虹膜数据集作为一个例子。

Answer 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))



Answer 2:

仅供参考,也可以使用简单的可能遇到这个错误(以及固定的) 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)


文章来源: Adding a simple lm trend line to a ggplot boxplot