Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I plot my R Squared value on my scatterplot using R?

This seems a simple question, so I hope its a simple answer. I am plotting my points and fitting a linear model, which I can do OK. I then want to plot some summary statistics, for example the R Squared value, on the plot also. I can only seem to get the R Squared value at the command line. Any advice; do I need to be looking at ggplot or anything else? Thanks in advance.

#Does the plot
plot(df$VAR1, df$VAR2)
#Adds the line
abline(lm(df$VAR2~df$VAR1), col="red")
#Shows stats on command line
summary(lm(df$VAR2~df$VAR1))
like image 898
phrozenpenguin Avatar asked Sep 21 '10 14:09

phrozenpenguin


2 Answers

You can abuse legend() because it has the handy logical placement:

R> DF <- data.frame(VAR1=rnorm(100), VAR2=rnorm(100))
R> with(DF, plot(VAR1, VAR2))
R> abline(fit <- lm(VAR2 ~ VAR1, data=DF), col='red')
R> legend("topright", bty="n", legend=paste("R2 is", 
+         format(summary(fit)$adj.r.squared, digits=4)))

Here bty="n" suppresses the box, and you need format() to shorten the display. Other text() is good, as are arguments main= and sub= to plot().

like image 116
Dirk Eddelbuettel Avatar answered Oct 18 '22 04:10

Dirk Eddelbuettel


The text function places text into the current plot, it is one option for adding the r-squared value to a plot. Also look at the grconvertX and grconvertY functions for ways to find the location to place the text.

The corner.label and emptyspace functions in the plotrix package may also help.

like image 34
Greg Snow Avatar answered Oct 18 '22 04:10

Greg Snow