**ggplot2** is a package for R which easily draws plots that are easier on the eyes than R’s built-in plotting functions, though the grammar is different than what is commonly used in R. This code demonstrates how to prepare a data frame of basic math functions (logarithm, sine, etc.) and plot it with ggplot2. The code is designed to be easy to read and to adapt to real world problems.

# install ggplot2 from CRAN repository (remembered across sessions)
install.packages('ggplot2')
# load ggplot2 (required each session)
require(ggplot2)
# create a data frame with basic math functions
x1to100 <- data.frame(x=1:100, val=1:100, fun='x') # linear x=x
log1to100 <- data.frame(x=1:100, val=log(1:100), fun='log') # natural log
logten1to100 <- data.frame(x=1:100, val=log10(1:100), fun='log10') # log base 10
sqrt1to100 <- data.frame(x=1:100, val=sqrt(1:100), fun='sqrt') # square root
square1to10 <- data.frame(x=1:10, val=1:10*1:10, fun='square') # x squared, only 10 values because of scale
sin1to100 <- data.frame(x=1:100, val=sin(1:100), fun='sin') # sine
x <- rbind(log1to100,logten1to100,sqrt1to100, x1to100, square1to10 , sin1to100)
# inspect the data frame
summary(x)
x[1:10,]
# Prepare plot
p <- ggplot(x, aes(x=x, y=val, group=fun))
# Plot. Add legend and color by function. Add title.
p + geom_line(aes(color=fun)) + opts(title='Basic math functions')

Here is the line chart (saved as a PNG using RGui’s **File – Save As**):

### Like this:

Like Loading...

Nice post. You can accomplish the same in ggplot2 with more concise code:

p0 = qplot(x = 1:100, geom = ‘blank’)

funcs_to_plot = list(‘identity’, ‘sqrt’, ‘log’, ‘log10′, ‘sin’)

p0 + llply(funcs_to_plot, function(f) {

stat_function(fun = f, geom = ‘line’, colour = sample(600, 1))

})

Thank you. I had to look up llply: it looks like a useful function for R ninjas.

By the way, something translated the straight quote to angle quotes, so this may work better

tx for this

what is the function that squares in llply ?

You can define a custom function first, say,

myFunc = function(x) {x^2}

Then add ‘myFunc’ to the end of the list “funcs_to_plot”

@ljarvio

Thanks for that