Hi R collective, I quite like the "curve" function because you can chuck a R function into it, and see the graph in one line of R.
I had a google and found some threads for filling under the line; http://tolstoy.newcastle.edu.au/R/e2/help/07/09/25457.html However they seem to miss the point of the simplicity of going, "I wonder what that looks like, and can I have some colour with that please ;-)" So I found the easiest way to do that was to attach a polygon call onto the end of the curve function definition; else plot(x, y, type = type, ylab = ylab, xlim = xlim, log = lg, + polygon( + c(from, x, to), + c(min(y),y,min(y)), + col=areacol, lty=0 + ) } areacurve(sin(2*pi*6*x+pi/2),areacol="red") and stick that in my r init file. Now the question is, am I missing something elementary here? Cheers, T areacurve<-function (expr, from = NULL, to = NULL, n = 101, add = FALSE, type = "l", ylab = NULL, log = NULL, xlim = NULL, areacol="gray", ...) { sexpr <- substitute(expr) if (is.name(sexpr)) { fcall <- paste(sexpr, "(x)") expr <- parse(text = fcall) if (is.null(ylab)) ylab <- fcall } else { if (!(is.call(sexpr) && match("x", all.vars(sexpr), nomatch = 0L))) stop("'expr' must be a function or an expression containing 'x'") expr <- sexpr if (is.null(ylab)) ylab <- deparse(sexpr) } if (is.null(xlim)) delayedAssign("lims", { pu <- par("usr")[1L:2] if (par("xaxs") == "r") pu <- extendrange(pu, f = -1/27) if (par("xlog")) 10^pu else pu }) else lims <- xlim if (is.null(from)) from <- lims[1L] if (is.null(to)) to <- lims[2L] lg <- if (length(log)) log else paste(if (add && par("xlog")) "x", if (add && par("ylog")) "y", sep = "") if (length(lg) == 0) lg <- "" x <- if (lg != "" && "x" %in% strsplit(lg, NULL)[[1L]]) { if (any(c(from, to) <= 0)) stop("'from' and 'to' must be > 0 with log=\"x\"") exp(seq.int(log(from), log(to), length.out = n)) } else seq.int(from, to, length.out = n) y <- eval(expr, envir = list(x = x), enclos = parent.frame()) if (add) { lines(x, y, type = type, ...) } else plot(x, y, type = type, ylab = ylab, xlim = xlim, log = lg, ...) polygon( c(from, x, to), c(min(y),y,min(y)), col=areacol, lty=0 ) } ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.