17

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

而且这条线没有出现在我的情节上。

这两种情况下使用的模型是相同的。如果有人能指出我哪里出错了,那就太好了。

编辑:以 iris 数据集为例。

4

2 回答 2

25

错误消息几乎是不言自明的:添加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))

在此处输入图像描述

于 2012-06-06T09:49:14.547 回答
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)
于 2015-08-04T21:24:20.157 回答