如何在R中定义abline线性回归的图形界限

时间:2014-10-20 18:34:38

标签: r plot linear-regression

我试图截断abline的末尾,这实际上只是我数据的线性回归。

fit1=lm(logy~logx)

> fit1

Call:
lm(formula = logy ~ logx)

Coefficients:
(Intercept)         logx  
     -5.339       -2.115 

logx被log10(x[1:365]转换。 logy遵循相同的代码。当我用abline(fit1,col="red")绘图时,我得到了我想要的线,但是这条线超出了我最初设置的边界[1:365]。我尝试了par=xpd并且没有将线路缩小到我想要的限制。我玩segments()无济于事。也许它是一个line()参数?

编辑 这是新的解决方案:

#the following vectors x and y store our data that we want to plot
x<-(1:10)
y<-(10:1)
plot(x,y,type="l",log="xy")
#we want to do a linear regression on our log10 transformed data and add the line to the plot
logy=log10(y[3:8])
logx=log10(x[3:8])
fit1=lm(logy~logx)
#finally, we want the regression line to only seem like it applies over the range from 3 to 8
clip(3,8,8,3)
abline(fit1,col="red")

这会产生一个图,其中一条线(现在,没有)在x轴上延伸超过3到8。我只希望回归线从x = 3到x = 8显示,遵循相同的斜率。

2 个答案:

答案 0 :(得分:4)

您可以clip绘图区域。我无法使用您的数据,因为您的示例不可重现,但这里有一个例子:

> plot(1,1,type='n',xlim=c(0,400), ylim=c(0,10))
> clip(1,365,0,10)
> abline(h=5,col='red')

在坐标x0=1,x1=365,y0=0,y1=10框内限定一条线的结果:

enter image description here

答案 1 :(得分:3)

您可以使用segments()

例如:

segments(x0=3, # Value from x (initial)
         x1=8, # Value to x (final)
         y0=5, # Value from y (initial)
         y1=5, # Value to y (final)
         col='red')