2.6 Plotting a Function Curve
2.6.2 Solution
To plot a function curve, as in Figure 2.12, use curve()
and pass it an expression with the variable x:
curve(x^3 - 5*x, from = -4, to = 4)
![Function curve with base graphics (left); With user-defined function (right)](ch02_files/figure-html/FIG-QUICK-FUNCTION-BASE-1.png)
![Function curve with base graphics (left); With user-defined function (right)](ch02_files/figure-html/FIG-QUICK-FUNCTION-BASE-2.png)
Figure 2.12: Function curve with base graphics (left); With user-defined function (right)
You can plot any function that takes a numeric vector as input and returns a numeric vector, including functions that you define yourself. Using add = TRUE
will add a curve to the previously created plot:
# Plot a user-defined function
<- function(xvar) {
myfun 1 / (1 + exp(-xvar + 10))
}curve(myfun(x), from = 0, to = 20)
# Add a line:
curve(1 - myfun(x), add = TRUE, col = "red")
With ggplot2, you can get a similar result (Figure 2.13), by using stat_function(geom = "line")
and passing it a function that takes a numeric vector as input and returns a numeric vector:
library(ggplot2)
# This sets the x range from 0 to 20
ggplot(data.frame(x = c(0, 20)), aes(x = x)) +
stat_function(fun = myfun, geom = "line")
#> This is an untitled chart with no subtitle or caption.
#> It has x-axis 'x' with labels 0, 5, 10, 15 and 20.
#> It has y-axis 'y' with labels 0.00, 0.25, 0.50, 0.75 and 1.00.
#> The chart is a set of 1 line.
#> Line 1 connects 101 points.
![A function curve with ggplot2](ch02_files/figure-html/FIG-QUICK-FUNCTION-GGPLOT-1.png)
Figure 2.13: A function curve with ggplot2
2.6.3 See Also
See Recipe ?? for more in-depth information about plotting function curves.