Hi: Here's an example of how one might do this in a specific example using geom_text().
# Some fake data: df <- data.frame(x = 1:10, y = 0.5 + (1:10) + rnorm(10)) # Fit a linear model to the data and save the model object: mod <- lm(y ~ x, data = df) # Create a list of character strings - the first component # produces the fitted model, the second produces a # string to compute R^2, but in plotmath syntax. rout <- list(paste('Fitted model: ', round(coef(mod)[1], 3), ' + ', round(coef(mod)[2], 3), ' x', sep = ''), paste('R^2 == ', round(summary(mod)[['r.squared']], 3), sep = '') ) # This looks ugly, but I'm using the round() function to make the # equations look more sane. coef(mod) extracts the model # coefficients (intercept, then slope), and # summary(mod)[['r.squared']] extracts R^2. # See what they look like: rout # Notice that the first component of rout is simply a text string # that can be passed as is, but the second string needs to be # wrapped inside an expression, which is what parse = TRUE # in geom_text() does. # Now construct the plot; given the (x, y) extent of the data, the # coordinates make sense, but you have to adapt them to # your data. ggplot(df, aes(x, y)) + geom_smooth(method = 'lm') + geom_text(aes(x = 2, y = 10, label = rout[[1]]), hjust = 0) + geom_text(aes(x = 2, y = 9.5, label = rout[[2]]), hjust = 0, parse = TRUE ) hjust = 0 makes the text strings flush left, parse = TRUE in the second call converts the second string in rout into an expression. This is fine if your plot is a one-off or two-off deal; the code above gives you a sense of the programming required. OTOH, if you need to do this a lot, then you're better off with a function that can automate the process, which Bryan was kind enough to provide. I might add that there is a dedicated ggplot2 listserv on google: ggpl...@googlegroups.com, for which questions like these are well suited. HTH, Dennis On Thu, Nov 10, 2011 at 5:45 AM, Durant, James T. (ATSDR/DTEM/PRMSB) <h...@cdc.gov> wrote: > Hello - > > So I am trying to use ggplot2 to show a linear regression between two > variables, but I want to also show the fit of the line on the graph as well. > > I am using ggplot2 for other graphics in what I am working on, so even > though this would be a fairly easy thing to do in Excel, I would prefer to do > it in R to keep my look and feel, and I think ggplot2 is just cooler. > > Here is a sample script of what I am trying to accomplish: > > df<-NULL > df$x<-rnorm(100) > df$y<-rnorm(100) > df<-data.frame(df) > > ggplot(df, aes(x=x,y=y))+geom_point()+geom_smooth(method=lm) > > > # would like to be able to showr squared and slope/intercept of lm > > VR > > Jim > > > James T. Durant, MSPH CIH > Emergency Response Coordinator > US Agency for Toxic Substances and Disease Registry > Atlanta, GA 30341 > 770-378-1695 > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > ______________________________________________ R-help@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.