我试图截断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显示,遵循相同的斜率。
答案 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
框内限定一条线的结果:
答案 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')