2014-10-02 26 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)