On Jun 22, 2012, at 1:50 PM, Martin Maechler wrote:
It's really not that difficult to fix with some simple changes to the
code:
scatter.smooth.col <-
function (x, y = NULL, span = 2/3, degree = 1, family =
c("symmetric",
"gaussian"), xlab = NULL, ylab = NULL, ylim = range(y, pred$y,
na.rm = TRUE), evaluation = 50, ..., lcol, llty, llwd)
{
xlabel <- if (!missing(x))
deparse(substitute(x))
ylabel <- if (!missing(y))
deparse(substitute(y))
xy <- xy.coords(x, y, xlabel, ylabel)
x <- xy$x
y <- xy$y
xlab <- if (is.null(xlab))
xy$xlab
else xlab
ylab <- if (is.null(ylab))
xy$ylab
else ylab
pred <- loess.smooth(x, y, span, degree, family, evaluation)
plot(x, y, ylim = ylim, xlab = xlab, ylab = ylab, ...)
lines(pred$x, pred$y, col=lcol, lty=llty, lwd=llwd)
invisible()
}
require(graphics) # Not really sure why this is needed but it's in
the help page
because the function builds on loess() and loess() is part of
'stats' and not 'graphics' (and because all of this is
"historical" ..)
with(cars, scatter.smooth.col(speed, dist, lcol="red", llwd=3,
llty=3))
# dotted thick smoothed line results
Indeed, this is really trivial and one could argue
"every" R user should be able to do something like the above.
A slightly nicer solution --- which not every R user will be able to
do,
but hopefully (;-) everyone reading R-help for a little while ---
is to allow a *list* of more arguments, all passed to lines(),
actually as Mark proposed {at the very end}, and to use
do.call(lines, *)
As a little exercise for you to see,
I'll add that to R-devel .. even though I wonder if its worth
the extra work {{but then, as otherwise someone gets the idea to
file it in the bug tracker ..}}
soon to be visible at
https://svn.r-project.org/R/trunk/src/library/stats/R/loess.R
The reason I added specific arguments was to prevent the points and
the lines from necessarily being the same color. Likewise, I noted
that the 'lwd' argument seemed to affect the points in a manner I
found surprising, although it made sense when I thought about it a
bit. After looking at plot.default and par's conventions about
coloring parameters, I was going got suggest using 'col.pred' and
'lwd.pred' as argument names that would get passed to line( ... col,
lwd). Experimentation shows that the points do not get affected by
'lty'.
--
David.
Martin Maechler,
ETH Zurich (and R core)
--
David
On Jun 22, 2012, at 10:51 AM, Mark Payne wrote:
Hi David,
Thanks for the reply. I agree - it just seemed that it was something
fairly obvious that was missing from an otherwise handy little
function.... Would it be appropriate to file it as a "request for
improvement" in the bug tracking system?
Mark
On 22 June 2012 16:30, David L Carlson - dcarl...@tamu.edu
<+r-help+trevva+3b274928d0.dcarlson#tamu....@spamgourmet.com> wrote:
You are correct about scatter.smooth, but loess.smooth
(listed along with scatter.smooth on the same
help page) gives you the way to get what you want:
x <- rnorm(25)
y <- rnorm(25)
plot(x, y)
lines(loess.smooth(x,y), col="red", lty=2, lwd=2)
----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352
-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
project.org] On Behalf Of r-help.20.tre...@spamgourmet.com
Sent: Friday, June 22, 2012 6:04 AM
To: r-help@r-project.org
Subject: [R] scatter.smooth() line colour
Hi,
I really like the scatter.smooth() function - its extremeley
useful.
However, as far as I understand it, there is no way to change the
properties of the smoothing line e.g. col, lty, lwd. The
scatter.smooth function accepts a ... argument, but these are not
passed to the plotting function that actually plots the smoother -
only to the function that plots the points. Could I please
therefore
request that an argument be added to this function to give easier
control over line properties? e.g. line.par=list()
Best wishes,
Mark Payne
David Winsemius, MD
West Hartford, CT
David Winsemius, MD
West Hartford, CT
______________________________________________
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.