# NOT RUN {
# 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))
# Using a custom anonymous function
base + stat_function(fun = function(.x) .5*exp(-abs(.x)))
base + stat_function(fun = ~ .5*exp(-abs(.x)))
# Using a custom named function
f <- function(.x) .5*exp(-abs(.x))
base + stat_function(fun = f)
# }
Run the code above in your browser using DataLab