【问题标题】:Adding a simple lm trend line to a ggplot boxplot将简单的 lm 趋势线添加到 ggplot 箱线图
【发布时间】:2015-08-05 05:36:19
【问题描述】:

使用标准 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 数据集为例。

【问题讨论】:

    标签: r ggplot2 boxplot trendline


    【解决方案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))
    

    【讨论】:

    • 啊,好吧,我不知道必须用它替换公式。感谢您解决这个问题。
    • 请注意,我没有“替换”公式。该公式不是必需的,因此我将其删除。
    • 讨厌:“错误信息是不言自明的”。如果它是不言自明的,OP 就不会一开始就问这个问题。
    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      相关资源
      最近更新 更多