geom_abline {ggplot2} | R Documentation |
Line, specified by slope and intercept
geom_abline(mapping=NULL, data=NULL, stat="abline", position="identity", ...)
mapping |
mapping between variables and aesthetics generated by aes |
data |
dataset used in this layer, if not specified uses plot dataset |
stat |
statistic used by this layer |
position |
position adjustment used by this layer |
... |
ignored |
The abline geom adds a line with specified slope and intercept to the plot.
With its siblings geom_hline and geom_vline, it's useful for annotating plots. You can supply the parameters for geom_abline, intercept and slope, in two ways: either explicitly as fixed values, or stored in the data set. If you specify the fixed values (geom\_abline(intercept=0, slope=1)
) then the line will be the same in all panels, but if the intercept and slope are stored in the data, then can vary from panel to panel. See the examples for more ideas.
This page describes geom_abline, see layer
and qplot
for how to create a complete plot from individual components.
A layer
The following aesthetics can be used with geom_abline. Aesthetics are mapped to variables in the data with the aes
function: geom\_abline(\code{aes}(x = var))
colour
: border colour
size
: size
linetype
: line type
Hadley Wickham, http://had.co.nz/
stat_smooth
: To add lines derived from the data
geom_hline
: for horizontal lines
geom_vline
: for vertical lines
geom_segment
: for a more general approach
## Not run: p <- qplot(wt, mpg, data = mtcars) # Fixed slopes and intercepts p + geom_abline() p + geom_abline(intercept = 20) # Calculate slope and intercept of line of best fit coef(lm(mpg ~ wt, data = mtcars)) p + geom_abline(intercept = 37, slope = -5) p + geom_abline(intercept=10, colour="red", size=2) # See ?stat_smooth for fitting smooth models to data p + stat_smooth(method="lm", se=FALSE) # Slopes and intercepts as data p <- ggplot(mtcars, aes(x = wt, y=mpg), . ~ cyl) + geom_point() df <- data.frame(a=rnorm(10, 25), b=rnorm(10, 0)) p + geom_abline(aes(intercept=a, slope=b), data=df) # Slopes and intercepts from linear model coefs <- ddply(mtcars, .(cyl), function(df) { m <- lm(mpg ~ wt, data=df) data.frame(a = coef(m)[1], b = coef(m)[2]) }) str(coefs) p + geom_abline(data=coefs, aes(intercept=a, slope=b)) # It's actually a bit easier to do this with stat_smooth p + geom_smooth(aes(group=cyl), method="lm") p + geom_smooth(aes(group=cyl), method="lm", fullrange=TRUE) ## End(Not run)