Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plot a function with ggplot, equivalent of curve()

Tags:

plot

r

ggplot2

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!

like image 439
Charlie Avatar asked Mar 03 '11 07:03

Charlie


People also ask

How do you graph a function in R studio?

To plot a chart of an Object in R, use the plot() function. Point and line plots can be produced using the plot() function, which takes x and y points either as vectors or single numbers along with many other parameters.

What does curve () do in R?

curve() function in R Language is used to draw a curve for the equation specified in the argument.


2 Answers

You can add a curve using the stat_function:

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

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/


In earlier versions, you could use qplot, as below, but this is now deprecated.

qplot(c(0,2), fun=sin, stat="function", geom="line") 
like image 89
kohske Avatar answered Oct 14 '22 14:10

kohske


The data.frame example above works well, and it makes grid lines. The qplot example doesn't work in ggplot2 2.2.0 for the reasons given.

You can also use the "curve" function in ggplot2 2.2.0, but it does not automatically make grid lines or background color. For example:

curve(cos(x), from= 0, to= pi/2).   

The "ggplot(data.frame(... ) method gives the full impressive range of ggplot2's formatting options. I like it.

like image 25
Never Too Old To Learn Avatar answered Oct 14 '22 15:10

Never Too Old To Learn