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)
mapping | Set of aesthetic mappings created by |
---|---|
data | The data to be displayed in this layer. There are three options: If A A |
geom | The geometric object to use display the data |
position | Position adjustment, either as a string, or the result of a call to a position adjustment function. |
... | Other arguments passed on to |
fun | Function to use. Either 1) an anonymous function in the base or
rlang formula syntax (see |
xlim | Optionally, restrict the range of the function to this range. |
n | Number of points to interpolate along |
args | List of additional arguments to pass to |
na.rm | If |
show.legend | logical. Should this layer be included in the legends?
|
inherit.aes | If |
stat_function()
understands the following aesthetics (required aesthetics are in bold):
group
y
Learn more about setting these aesthetics in vignette("ggplot2-specs")
.
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)# 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))