在R中设置趋势线长度

时间:2014-10-01 16:34:19

标签: r scatter-plot trendline

我设法在一个图上创建了一个包含两个数据集的散点图。一组数据的X轴范围为0-40(绿色),而另一组数据范围为0-15(红色)。

(http://s9.postimg.org/fw48s8rq7/Rplot.jpg)

我使用此代码分别为红色和绿色数据添加趋势线(使用par(new))。

plot( x1,y1, col="red", axes=FALSE, xlab="",ylab="",ylim= range(0:1), xlim= range(0:40))
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}
fit <- nls(y1 ~ f(x1,a,b,d), start = c(a=1, b=1, d=1)) 
co <- coef(fit)
curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="red", lwd=1)

我的问题是我似乎无法找到一种方法来阻止x轴上15处的红色趋势线。我“go”了一下,似乎没有任何问题出现在我的问题上。很多关于excel趋势线!我厌倦了添加一个end =语句以适应&lt; - 而且这也不起作用。

请帮忙,

我希望我已经发布了足够的信息。提前谢谢。

2 个答案:

答案 0 :(得分:1)

尝试使用ggplot。以下示例使用mtcars数据:

library(ggplot2)
ggplot(mtcars, aes(qsec, wt, color=factor(vs)))+geom_point()+ stat_smooth(se=F)

enter image description here

答案 1 :(得分:0)

您可以使用from函数的tocurve参数在基本图形中执行此操作(有关详细信息,请参阅curve的帮助)。例如:

# Your function
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}

# Plot the function from x=-100 to x=100
curve(f(x, a=-2, b=3, d=0), from=-100, to=100, col="red", lwd=1, lty=1)

# Same curve going from x=-100 to x=0 (and shifted down by 1000 units so it's
# easy to see)
curve(f(x, a=-2, b=3, d=-1000), from=-100, to=0, 
      add=TRUE, col="blue", lwd=2, lty=1)

enter image description here

如果要以编程方式设置曲线x-limits,可以执行以下操作(假设您的数据框名为df,而您的x变量称为x):

curve(f(x, a=-2, b=3, d=0), from=range(df$x)[1], to=range(df$x)[2], 
       add=TRUE, col="red", lwd=1, lty=1)