Building lots of functions and adding legends for them in ggplot2

I want to build y = log (1 + x) and y = x in the range [-0.25, 0.25]. Here is my code so far -

library(ggplot2) log1plusx <- function(x) log(1+x) self <- function(x) x ggplot(data.frame(x=c(-0.25, 0.25)), aes(x=x)) + stat_function(fun=log1plusx, color="red") + stat_function(fun=self, color="blue") 

I cannot figure out how to add legends for these two lines. I tried using guide_legend, but so far nothing is working.

Any ideas?

+3
r plot ggplot2 legend
source share
2 answers

Partial Answer:

 ggplot(data.frame(x=c(-0.25, 0.25)), aes(x=x)) + geom_path(aes(colour="red"), stat="function", fun=log1plusx)+ geom_path(aes(colour="blue"), stat="function", fun=self) + scale_colour_identity("Function", guide="legend", labels = c("log1plusx", "self"), breaks = c("red", "blue")) 

Although, in my opinion, you better build a data.frame file before plotting.

+3
source share

This is how I solved it. Other ideas are welcome.

 log1plusx <- function(x) log(1+x) self <- function(x) x plot.range1 <- data.frame(x=c(-0.25, 0.25), Functions = factor(1)) plot.range2 <- data.frame(x=c(-0.25, 0.25), Functions = factor(2)) ggplot(NULL, aes(x=x, colour=Functions)) + stat_function(data = plot.range1, fun = log1plusx) + stat_function(data = plot.range2, fun = self) + scale_colour_manual(values = c("red", "green"), labels = c("log(1+x)", "x")) + theme(axis.title.y=element_blank()) 
+1
source share

All Articles