[Rd] A small modification of plot.acf (patch)

Андрей Парамонов cmr.pent at gmail.com
Wed May 28 18:08:31 CEST 2008


2008/5/27 Prof Brian Ripley <ripley at stats.ox.ac.uk>:
> That is the part that needs justification.  I've never seen an example where
> that was the case (and you don't give one), and I use acf() a lot. The
> examples fit and their series names are not particularly short.
>
> Also, the user has the option to supply 'main' to plot.acf via '...', so why
> is that not sufficient?  And you can even suppress the title by main="" and
> use title() for even more control.
>

Here is an example with real-life series names and plot dimensions:

data <- cbind('Число пожаров'  = arima.sim(n = 100, list(ar = 0.5)),
             'Инд. Нестерова' = arima.sim(n = 100, list(ar = 0.1)))

x11(width = 4.8, height = 4.2)
acf(data, mar = c(3, 3, 3, 1) + 0.1, cex.main = 1)

I have tried to supply main argument to the acf function:

acf(data, mar = c(3, 3, 3, 1) + 0.1, cex.main = 1,
   main = matrix(c('Число пожаров',
     'Число пожаров &\nИнд. Нестерова',
     'Число пожаров &\nИнд. Нестерова',
     'Инд. Нестерова'), 2, 2))

but it doesn't work the desired way. Please see the implementation of
plot.acf. title function doesn't seem to play well with par(mfrow = ),
so it doesn't help, too.

In principle, it's not *that* hard to implement a custom version of
multivariate acf plot, but the current version of plot.acf provides
some sweet features like y-axes alignment etc. Writing another
plot.acf will inevitably lead to massive code duplication, which is
bad.

I have several ideas of how to tweak current plot.acf so it would
suffice my needs:

1) Add new main.sep argument (see the patch).

2) Let plot.acf recognize if main is a matrix and use its elements for
different plots, not just coerce it to vector and pass to every title.

3) Let plot.acf recognize if main is a function and call it with 2
arguments (i-series name and j-series name) to compose captions.

1) seems to be the easiest for a user, 2) and 3) provide more freedom.

Andrey Paramonov


More information about the R-devel mailing list