2

我设法在一个图上创建了一个包含两个数据集的散点图。一组数据的 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 处的红色趋势线的方法。我“用谷歌搜索”,但我的问题似乎没有任何问题。很多excel趋势线!我厌倦了添加 end= 语句来适应 <- 并且这也不起作用。

请帮忙,

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

4

2 回答 2

1

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

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

在此处输入图像描述

于 2014-10-01T16:55:14.503 回答
0

您可以使用函数的fromto参数在基本图形中执行此操作curve(有关更多详细信息,请参阅帮助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)

在此处输入图像描述

如果您想以编程方式设置曲线 x 限制,您可以执行以下操作(假设您的数据框被调用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)
于 2014-10-01T20:04:02.943 回答