Kristi Glover
2012-Jun-13 14:29 UTC
[R] How to plot linear, cubic and quadratic fitting curve in a figure?
Hi R experts, Could you please help me to fit a linear, cubic and quadratic curve in a figure? I was trying to show all these three fitting curves with different colour in one figure. I spent substantial time to figure it out, but I could not. I have given here a example and what I did for linear, but no idea for cubic and quadratic fitting curve> dput(test)structure(list(sp = c(4L, 5L, 9L, 12L, 14L), env = c(12L, 18L, 20L, 17L, 15L)), .Names = c("sp", "env"), class = "data.frame", row.names = c(NA, -5L))> plot(test$sp~test$env, main = "S vs. temp", xlim=c(0,20), ylim=c(0,14), ylab="S",xlab="env") > linear<-lm(test$sp~test$env) > quadratic<-lm(test$sp~test$env+I(test$env^2)) > #summary(quadratic) > cubic<-lm(test$sp~test$env+I(test$env^2)+I(test$env^3)) > #summary(cubic) > #fitting curve > abline(linear) >Here I did for linear, but now I don't how I can plot quadratic and cubic line in the figure with different colour. I further wanted to put r2 value on the top of the fitting line. ON linear fitting curve, I can see the line originated from left to right (cover whole x axis). I could not plot the line only within the data set. Would any one help me to figure it? I think it is not difficult but for me- it is really taking time. Thanks and waiting for your suggestions sincerely, Kristi Glover [[alternative HTML version deleted]]
Kenneth Frost
2012-Jun-13 15:03 UTC
[R] How to plot linear, cubic and quadratic fitting curve in a figure?
Hi, Kristi- Here is an option. ?curve...to add the polynomials to your graph ?text....for adding the R2 to you plot Ken On 06/13/12, Kristi Glover wrote:> > Hi R experts, > Could you please help me to fit a linear, cubic and quadratic curve in a figure? I was trying to show all these three fitting curves with different colour in one figure. > I spent substantial time to figure it out, but I could not. > > I have given here a example and what I did for linear, but no idea for cubic and quadratic fitting curve > > > > dput(test) > structure(list(sp = c(4L, 5L, 9L, 12L, 14L), env = c(12L, 18L, > 20L, 17L, 15L)), .Names = c("sp", "env"), class = "data.frame", row.names = c(NA, > -5L)) > > plot(test$sp~test$env, main = "S vs. temp", xlim=c(0,20), ylim=c(0,14), ylab="S",xlab="env") > > linear<-lm(test$sp~test$env) > > quadratic<-lm(test$sp~test$env+I(test$env^2)) > > #summary(quadratic) > > cubic<-lm(test$sp~test$env+I(test$env^2)+I(test$env^3)) > > #summary(cubic) > > #fitting curve > > abline(linear) > > > Here I did for linear, but now I don't how I can plot quadratic and cubic line in the figure with different colour. I further wanted to put r2 value on the top of the fitting line. > ON linear fitting curve, I can see the line originated from left to right (cover whole x axis). I could not plot the line only within the data set. > Would any one help me to figure it? I think it is not difficult but for me- it is really taking time. > > Thanks and waiting for your suggestions > > sincerely, > Kristi Glover > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Robert Baer
2012-Jun-13 15:39 UTC
[R] How to plot linear, cubic and quadratic fitting curve in a figure?
> dput(test)structure(list(sp = c(4L, 5L, 9L, 12L, 14L), env = c(12L, 18L, 20L, 17L, 15L)), .Names = c("sp", "env"), class = "data.frame", row.names = c(NA, -5L))> plot(test$sp~test$env, main = "S vs. temp", xlim=c(0,20), ylim=c(0,14), > ylab="S",xlab="env") > linear<-lm(test$sp~test$env) > quadratic<-lm(test$sp~test$env+I(test$env^2)) > #summary(quadratic) > cubic<-lm(test$sp~test$env+I(test$env^2)+I(test$env^3)) > #summary(cubic) > #fitting curve > abline(linear) >Thanks and waiting for your suggestions sincerely, Kristi Glover Try adding the following lines of code cq = coef(quadratic) cc = coef(cubic) newenv = seq(min(test$env), max(test$env), by = (max(test$env) - min(test$env))/500) sp.quad = cq[1] + cq[2]*newenv +cq[3]*newenv^2 lines(newenv,sp.quad, col='red') sp.cubic = cc[1] + cc[2]*newenv +cc[3]*newenv^2 +cc[4]*newenv^3 lines(newenv, sp.cubic, col='blue', lty=2) ------------------------------------------ Robert W. Baer, Ph.D. Professor of Physiology Kirksville College of Osteopathic Medicine A. T. Still University of Health Sciences 800 W. Jefferson St. Kirksville, MO 63501 660-626-2322 FAX 660-626-2965
David Winsemius
2012-Jun-13 17:08 UTC
[R] How to plot linear, cubic and quadratic fitting curve in a figure?
On Jun 13, 2012, at 10:29 AM, Kristi Glover wrote:> > Hi R experts, > Could you please help me to fit a linear, cubic and quadratic curve > in a figure? I was trying to show all these three fitting curves > with different colour in one figure. > I spent substantial time to figure it out, but I could not. > > I have given here a example and what I did for linear, but no idea > for cubic and quadratic fitting curve > > >> dput(test) > structure(list(sp = c(4L, 5L, 9L, 12L, 14L), env = c(12L, 18L, > 20L, 17L, 15L)), .Names = c("sp", "env"), class = "data.frame", > row.names = c(NA, > -5L)) >> plot(test$sp~test$env, main = "S vs. temp", xlim=c(0,20), >> ylim=c(0,14), ylab="S",xlab="env") >> linear<-lm(test$sp~test$env) >> quadratic<-lm(test$sp~test$env+I(test$env^2)) >> #summary(quadratic) >> cubic<-lm(test$sp~test$env+I(test$env^2)+I(test$env^3)) >> #summary(cubic) >> #fitting curve >> abline(linear) >> > Here I did for linear, but now I don't how I can plot quadratic and > cubic line in the figure with different colour. I further wanted to > put r2 value on the top of the fitting line. > ON linear fitting curve, I can see the line originated from left to > right (cover whole x axis). I could not plot the line only within > the data set. > Would any one help me to figure it? I think it is not difficult but > for me- it is really taking time. >There is the poly function that does the heavy lifting and also preserves the statistical propriety of polynomial fits. > quadratic<-lm( sp ~ poly(env, 2), data=test) > #summary(quadratic) > cubic<-lm( sp ~ poly(env, 3), data=test) > #summary(cubic) > #fitting curve > plot( sp~ env, data=test, main = "S vs. temp", xlim=c(0,20), ylim=c(0,14), ylab="S",xlab="env") > abline(linear) > lines( test$env[order(test$env)] , predict(quadratic)[order(test $env)] ) > lines( test$env[order(test$env)] , predict(cubic)[order(test $env)] , col="red") You can substitute: lines( x=seq( min(test$env) , max(test$env), len=100) , y= predict(model, data.frame(env=seq( min(test$env) , max(test$env), len=100) ) ) ) ... if you want smoother output. -- David Winsemius, MD West Hartford, CT