有没有办法在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)
蓝线是ggplot的,我添加的红色是为了显示我想添加的线,将geom_smooth函数约束到x-范围12-80 - 例如显示其中的域在考虑特殊情况和长尾时,变量之间可能存在假设的关系。任何有关如何实现这一目标的建议。
答案 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')
这是否会修改回归线的公式,无论如何都要检查公式是否有变化?