在箱线图中添加geom_smooth

8

我正在尝试为一些箱线图添加geom_smooth()趋势,但是我的图层没有正确的合并。

我该如何将这两个图层合并在一起呢?

geom_boxplot:

ggplot(test) + geom_boxplot(aes(x=factor(year), y = dm))

这里是图片描述

geom_smooth

该功能可在ggplot2中用于创建平滑拟合线。
ggplot(test, aes(year, dm)) + geom_smooth() 

enter image description here

geom_boxplot和geom_smooth都可以使用

ggplot(test) + geom_boxplot(aes(x=factor(year), y = dm)) + geom_smooth(aes(x = year, y = dm))

enter image description here


2
到现在为止,您应该知道如果提供一个“最小可重现示例”,那么帮助会更容易。 - Henrik
2
提示:其中一层使用年份作为因子,另一层使用年份作为连续变量。 - Heroka
4
提示2:阅读手册(?geom_boxplot)。"只要提供分组变量,您也可以使用连续的x轴制作箱线图。" - Henrik
附注:我猜数据在此前的帖子中。 - lukeA
另一个相关的问题在这里(https://dev59.com/smgv5IYBdhLWcg3wBMIK) - aosmith
1个回答

21

我使用了mtcars公共数据,因为它没有被提问者使用过。

data(mtcars)
创建箱线图,按照惯例分配给对象。我使用一个随机变量作为箱线图的因子,另一个变量作为数字。

创建箱线图,如往常一样,并将其分配给对象。我选择一个随机变量作为箱线图的因子,另一个变量作为数值。

g <- ggplot(mtcars, aes(factor(carb), mpg)) + geom_boxplot()

添加geom_smooth。geom_smooth从geom_boxplot继承必要的信息。

g + geom_smooth(method = "lm", se=TRUE, aes(group=1))

请注意,在此情况下,aes(group=1) 表达式是 geom_smooth 所必需的。如果没有它,R 将返回错误:

geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)?

固定线平滑的值是线性回归的系数,而截距对应于因子的最低水平 (carb = 1)。

enter image description here


2
你能添加一些解释吗? - Heroka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接