将自定义范围ab /平滑线添加到ggplot

时间:2014-02-18 16:10:34

标签: r ggplot2

有没有办法在ggplot中限制abline或smooth line的数据范围?例如,指数分布数据有时可能具有显着的引导异常值以及长而有趣的尾部:

d = sort(rexp(100, rate = 1), decreasing=T) 
ggplot(NULL, aes(1:length(d), d)) + geom_point() + scale_y_log10() + geom_smooth(method = lm, se=F)

enter image description here

蓝线是ggplot的,我添加的红色是为了显示我想添加的线,将geom_smooth函数约束到x-范围12-80 - 例如显示其中的域在考虑特殊情况和长尾时,变量之间可能存在假设的关系。任何有关如何实现这一目标的建议。

2 个答案:

答案 0 :(得分:1)

试试这个:

library(ggplot2)
set.seed(1)
d <-  sort(rexp(100, rate = 1), decreasing=T)
gg <- data.frame(x=1:length(d),y=d
                 )
ggplot(gg, aes(x,y)) +
  geom_point() + 
  scale_y_log10() + 
  geom_smooth(data=gg[gg$x>11 & gg$x<81,],method = lm, se=F)

答案 1 :(得分:0)

不幸的是,我没有代表对@jlhoward的帖子发表评论,但我想问一下,以这种方式限制数据是否会影响回归线的结果? 通过子集化,它是否会排除计算中的点数,或者只是对显示的结果产生影响?

例如,我希望执行以下操作:

gcloud alpha resource-manager folders

但这条线比我想要的长。我想在x = 600左右切割线。

# Adding "volume" to the diamonds data frame.
diamonds$volume = diamonds$x * diamonds$y * diamonds$z

ggplot(aes(x = volume, y = price), data = subset(diamonds, volume != 0 & volume < 800)) + 
  geom_point(alpha = 1/50, color = '#7ea4b3') + 
  geom_smooth(method = 'lm')

这是否会修改回归线的公式,无论如何都要检查公式是否有变化?