将geom_smooth添加到boxplot

时间:2016-01-05 09:57:52

标签: r ggplot2

我试图将geom_smooth()趋势添加到某个箱线图中,但我没有正确获取图层。

如何将这两者合并在一起?

geom_boxplot:

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

enter image description here

geom_smooth

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

1 个答案:

答案 0 :(得分:14)

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

data(mtcars)

像往常一样创建箱图,并分配给对象。我把随机变量作为boxplot的一个因子,另一个变量作为数字。

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

注意到在这种情况下geom_smooth需要表达式aes(group=1)。没有它,R返回错误:

geom_smooth:每个组只有一个唯一的x值。也许你想要aes(group = 1)?

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

enter image description here