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