Re: [R] Change labels of x-axes in Plot of stl() function?

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Thu 08 Dec 2005 - 12:08:27 EST

I noticed that we can combine the function and proto approaches by placing the proto in the function with these advantages:

  1. the function body can be reduced to just two statements
  2. no explicit manipulation of environments via environment(...) is required (as proto does that itself automatically)

In our new solution, the function signature and the redefinition of mtext are the same as in our prior function solution but the remaining lines in the function solution (that manipulate environments) are replaced with the single 'with' command as shown.

As before, placing stats:::plot.stl in the proto results in (1) a copy of that function being placed in the proto object and (2) the environment of that copy being set to the proto object itself

The parent of that proto object defaults to its lexical environment so all we need to do in order to ensure that xlab and the new mtext are accessible from the copy of plot.stl are to ensure that they are in that parent environment -- they need not be in the proto object itself. They will be accessed via inheritance anyways. Thus the solution reduces to just:

library(proto)
plot.stl <- function(..., xlab = "time") {

	mtext <- function(text, ...)
		graphics::mtext(if (text == "time") xlab else text, ...)
	with( proto(plot.stl = stats:::plot.stl), plot.stl(...) )
}

# test
example(stl) # defines stdm for use in the test plot.stl(stdm, xlab = "My xlab")

On 12/7/05, Gabor Grothendieck <ggrothendieck@gmail.com> wrote:
> This should fix that problem:
>
> plot.stl <- function(..., xlab = "time") {
> mtext <- function(text, ...)
> graphics::mtext(if (text == "time") xlab else text, ...)
> plot.stl <- stats:::plot.stl
> environment(plot.stl) <- environment()
> plot.stl(...)
> }
>
>
> Also for the proto solution try this:
>
> library(proto)
> STL <- proto(plot.stl = stats:::plot.stl,
> mtext = function(text, ...)
> graphics::mtext(if (text == "time") xlab else text, ...),
> xlab = "time (decade)")
>
> # test. First line computers stmd to be used as test data.
> example(stl)
> with(STL, plot.stl(stmd))
>
>
>
>
>
> On 12/7/05, Jan Verbesselt <Jan.Verbesselt@biw.kuleuven.be> wrote:
> > Thanks a lot!
> >
> > However, it's not working perfectly yet. The function plot.stl now also
> > changes the labels of Data, Seasonal, Trend, and Remainder to the text
> > defined for "xlab". How could this be fine-tuned?
> >
> > Regards,
> > Jan
> >
> > > -----Original Message-----
> > > From: Gabor Grothendieck [mailto:ggrothendieck@gmail.com]
> > > Sent: Wednesday, December 07, 2005 5:07 PM
> > > To: Jan Verbesselt
> > > Cc: r-help@stat.math.ethz.ch
> > > Subject: Re: [R] Change labels of x-axes in Plot of stl() function?
> > >
> > > If you look through the output of:
> > >
> > > stats:::plot.stl
> > >
> > > you see right near the end that "time" is hard coded in the call to mtext.
> > >
> > > However, we could temporarily redefine mtext so that it works as you
> > > wish and then redefine plot.stl so that it looks within the environment
> > > of our function to find mtext (rather than looking in the stats package):
> > >
> > > plot.stl <- function(..., xlab = "time") {
> > > mtext <- function(text, ...) graphics::mtext(xlab, ...)
> > > plot.stl <- stats:::plot.stl
> > > environment(plot.stl) <- environment()
> > > plot.stl(...)
> > > }
> > >
> > > # test it
> > > example(stl)
> > > plot.stl(stmd, xlab = "X")
> > >
> > >
> > >
> > > On 12/7/05, Jan Verbesselt <Jan.Verbesselt@biw.kuleuven.be> wrote:
> > > > Hi all,
> > > >
> > > > How can the label of the x-axes in the plot() of a stl.object be
> > > adapted?
> > > >
> > > > e.g.,
> > > >
> > > > When plotting: plot(stl(nottem, "per"))
> > > >
> > > > In the labels of the x-axes is "time". How can this be changed to e.g.,
> > > > "Time (dekade) "?
> > > >
> > > > It does not work with xlab or others anymore…
> > > >
> > > >
> > > >
> > > > Thanks,
> > > >
> > > > Jan
> > > >
> > > > _______________________________________________________________________
> > > > Ir. Jan Verbesselt
> > > > Research Associate
> > > > Biosystems Department ~ M³-BIORES
> > > > Vital Decosterstraat 102, 3000 Leuven, Belgium
> > > > Tel: +32-16-329750 Fax: +32-16-329760
> > > > http://gloveg.kuleuven.ac.be/
> > > > _______________________________________________________________________
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> > > >
> > > >
> > > > [[alternative HTML version deleted]]
> > > >
> > > >
> > > >
> > > > ______________________________________________
> > > > R-help@stat.math.ethz.ch mailing list
> > > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > > PLEASE do read the posting guide! http://www.R-project.org/posting-
> > > guide.html
> > > >
> > > >
> >
> >
> > Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
> >
> >
>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Dec 08 12:14:51 2005

This archive was generated by hypermail 2.1.8 : Thu 08 Dec 2005 - 14:30:34 EST