This stat makes it easy to superimpose a function on top of an existing plot. The function is called with a grid of evenly spaced values along the x axis, and the results are drawn (by default) with a line.
stat_function(mapping = NULL, data = NULL, geom = "path", position = "identity", ..., fun, xlim = NULL, n = 101, args = list(), na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
Set of aesthetic mappings created by
The data to be displayed in this layer. There are three options:
The geometric object to use display the data
Position adjustment, either as a string, or the result of a call to a position adjustment function.
Other arguments passed on to
Function to use. Either 1) an anonymous function in the base or
rlang formula syntax (see
Optionally, restrict the range of the function to this range.
Number of points to interpolate along
List of additional arguments to pass to
logical. Should this layer be included in the legends?
stat_function() understands the following aesthetics (required aesthetics are in bold):
Learn more about setting these aesthetics in
x's along a grid
value of function evaluated at corresponding x
# stat_function is useful for overlaying functions set.seed(1492) ggplot(data.frame(x = rnorm(100)), aes(x)) + geom_density() + stat_function(fun = dnorm, colour = "red")# To plot functions without data, specify range of x-axis base <- ggplot(data.frame(x = c(-5, 5)), aes(x)) base + stat_function(fun = dnorm)base + stat_function(fun = dnorm, args = list(mean = 2, sd = .5))# The underlying mechanics evaluate the function at discrete points # and connect the points with lines base <- ggplot(data.frame(x = c(-5, 5)), aes(x)) base + stat_function(fun = dnorm, geom = "point")base + stat_function(fun = dnorm, geom = "point", n = 20)base + stat_function(fun = dnorm, n = 20)# Two functions on the same plot base + stat_function(fun = dnorm, colour = "red") + stat_function(fun = dt, colour = "blue", args = list(df = 1))