2014-10-02 117 views
4

目前,下面的代码(更全面的代码的一部分)会生成一条线,其范围从图的最左边到最右边。如何防止线条在整个图形上延伸

geom_abline(intercept=-8.3, slope=1/1.415, col = "black", size = 1, 
      lty="longdash", lwd=1) + 

但是,我想行只能从x = 1到x = 9; x轴的极限是1-9。

在ggplot2中是否有一条命令,用于减少从手动定义的截距和斜率导出的线条,以仅覆盖x轴值限制的范围?

回答

1

如果您想手动定义该行,则可以使用geom_segment而不是geom_abline。如果您的斜率来自您绘制的数据集,最简单的方法是使用stat_smoothmethod = "lm"

下面是一些玩具数据的示例:

set.seed(16) 
x = runif(100, 1, 9) 
y = -8.3 + (1/1.415)*x + rnorm(100) 

dat = data.frame(x, y) 

估计截距和斜率:

coef(lm(y~x)) 

(Intercept)   x 
-8.3218990 0.7036189 

首先使积与geom_abline用于比较:

ggplot(dat, aes(x, y)) + 
    geom_point() + 
    geom_abline(intercept = -8.32, slope = 0.704) + 
    xlim(1, 9) 

使用geom_segment相反,必须定义行fo的开始和结束r均为xy。确保x轴上的线条在1和9之间被截断。使用stat_smooth。这将仅在默认情况下在解释变量的范围内绘制线条。

ggplot(dat, aes(x, y)) + 
    geom_point() + 
    stat_smooth(method = "lm", se = FALSE, color = "black") + 
    xlim(1, 9)