ggplot geom_smooth排除负值

时间:2014-11-17 21:18:49

标签: r ggplot2

我试图使用ggplot2 geom_smooth绘制带有标准误差(se)的线性回归,其中排除负值。不幸的是,使用scale_y_continuous会截断部分标准错误填充。如何在y = 0时平滑地结束se填充区域?

参见示例(使用y = 10而不是y = 0,但是相同的过程):

ymax<-max(mtcars$mpg)
myplot<- ggplot(data=mtcars, aes(x=wt, y=mpg)) +  
geom_smooth(method=lm,   se=TRUE,fill = "#3399FF", colour="#0000FF",size =1)  +
geom_point(shape=20, size=2) +
scale_y_continuous(limits = c(10, ymax)) 
suppressMessages(print(myplot))  

我希望我可以发布图表,但我刚加入了堆栈溢出,并且没有足够的信誉点来发布图片。该图显示回归线如预期的那样在y = 10处结束,但是se填充以垂直边缘结束(不是水平线,而下面应该排除se的线)。谢谢,抱歉,我无法发布图片:)

2 个答案:

答案 0 :(得分:2)

使用新版本的ggplot,我们现在需要:

 scale_y_continuous(limit=c(10,NA),oob=squish)

答案 1 :(得分:0)

我认为您要加载scales包(library("scales"))并将scale_y_continuous配方更改为

 scale_y_continuous(limit=c(10,ymax),oob=squish)

你的另一个选择是

 + coord_cartesian(ylim = c(10, ymax))