[R] Question about 'text' (add lm summary to a plot)

Christoph Buser buser at stat.math.ethz.ch
Thu Jul 21 15:18:11 CEST 2005


Dear Dan

I can only help you with your third problem, expression and
paste. You can use:

plot(1:5,1:5, type = "n")
text(2,4,expression(paste("Slope : ", 3.45%+-%0.34, sep = "")), pos = 4)
text(2,3.8,expression(paste("Intercept : ", -10.43%+-%1.42)), pos = 4)
text(2,3.6,expression(paste(R^2,": ", "0.78", sep = "")), pos = 4)

I do not have an elegant solution for the alignment.

Regards,

Christoph Buser

--------------------------------------------------------------
Christoph Buser <buser at stat.math.ethz.ch>
Seminar fuer Statistik, LEO C13
ETH (Federal Inst. Technology)	8092 Zurich	 SWITZERLAND
phone: x-41-44-632-4673		fax: 632-1228
http://stat.ethz.ch/~buser/
--------------------------------------------------------------


Dan Bolser writes:
 > 
 > I would like to annotate my plot with a little box containing the slope,
 > intercept and R^2 of a lm on the data.
 > 
 > I would like it to look like...
 > 
 >  +----------------------------+
 >  | Slope     :   3.45 +- 0.34 |
 >  | Intercept : -10.43 +- 1.42 |
 >  | R^2       :   0.78         |
 >  +----------------------------+
 > 
 > However I can't make anything this neat, and I can't find out how to
 > combine this with symbols for R^2 / +- (plus minus).
 > 
 > Below is my best attempt (which is franky quite pour). Can anyone
 > improve on the below?
 > 
 > Specifically, 
 > 
 > aligned text and numbers, 
 > aligned decimal places, 
 > symbol for R^2 in the text (expression(R^2) seems to fail with
 > 'paste') and +- 
 > 
 > 
 > 
 > Cheers,
 > Dan.
 > 
 > 
 > dat.lm <- lm(dat$AVG_CH_PAIRS ~ dat$CHAINS)
 > 
 > abline(coef(dat.lm),lty=2,lwd=1.5)
 > 
 > 
 > dat.lm.sum <- summary(dat.lm)
 > dat.lm.sum
 > 
 > attributes(dat.lm.sum)
 > 
 > my.text.1 <-
 >   paste("Slope : ",     round(dat.lm.sum$coefficients[2],2),
 >         "+/-",          round(dat.lm.sum$coefficients[4],2))
 > 
 > my.text.2 <-
 >   paste("Intercept : ", round(dat.lm.sum$coefficients[1],2),
 >         "+/-",          round(dat.lm.sum$coefficients[3],2))
 > 
 > my.text.3 <-
 >   paste("R^2 : ",       round(dat.lm.sum$r.squared,2))
 > 
 > my.text.1
 > my.text.2
 > my.text.3
 > 
 > 
 > ## Add legend
 > text(x=3,
 >      y=300,
 >      paste(my.text.1,
 >            my.text.2,
 >            my.text.3,
 >            sep="\n"),
 >      adj=c(0,0),
 >      cex=1)
 > 
 > ______________________________________________
 > R-help at stat.math.ethz.ch mailing list
 > https://stat.ethz.ch/mailman/listinfo/r-help
 > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html




More information about the R-help mailing list