Charlie Charlie - 19 days ago 6
R Question

Equivalent of curve() for ggplot

Is there an equivalent method for plotting functions using

ggplot
to the
curve()
command employed in base graphics? I guess that the alternative would be to just create a vector of values of the function and plot a connected line, but I was hoping for something a bit more simple.

Thanks!

Answer

You can add a curve using the stat_function:

ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=sin)

It is also possible to use qplot, but it's not clear if this is simplier:

qplot(c(0,2), fun=sin, stat="function", geom="line")

If your curve function is more complicated, then use a lambda function. For example,

ggplot(data.frame(x=c(0, 10)), aes(x)) + 
  stat_function(fun=function(x) sin(x) + log(x))

you can find other examples at http://kohske.wordpress.com/2010/12/25/draw-function-without-data-in-ggplot2/