[Rd] matplot.Date & matplot.POSIXct
@pencer@gr@ve@ @end|ng |rom prod@y@e@com
Tue Jan 28 06:02:28 CET 2020
Thanks for the reply.
On 2020-01-27 19:56, Abby Spurdle wrote:
> Maybe I'm missing something really obvious here, but I was unable to
> create a matrix out of POSIXct object(s).
> Perhaps that deserves a separate discussion...?
Can you provide an example?
The standard matplot application that concerns me is with
matplot(x, y, ...) where x has class Date or POSIXct and y is a matrix.
The "fda" package on CRAN includes a "matplot" help page with examples
that worked when I tested them recently.
If you have an example that you think should work but doesn't I'd
like to know. Maybe it should be added to the examples in
fda::matplot.Rd file, then the code should be modified until it works.
> Regarding your other comments/questions:
> (1) You should *NOT* mask functions from the graphics package (or
> base, stats, etc), except possibly for personal use.
> (2) The xlab and ylab are fine.
In most situations, I agree with your comment that, "You should
*NOT* mask functions from the graphics package (or base, stats, etc)".
However, when the behavior of the function in graphics, base, or
stats seems patently inappropriate and not adequately considered, then I
think that someone should mask the function in the core distribution
with one whose behavior seems more consistent with what most users would
most likely want.
Ten or twelve years ago, I concluded that the behavior of
graphics::matplot(x, y, ...) was inappropriate when x is either of class
Date or POSIXct. Specifically, it labeled the horizontal axis the same
as graphics::matplot(as.numeric(x), y, ...). I think it should instead
be labeled the same as graphics::plot(x, y[,1], ...) in such cases. To
fix this problem, I made fda::matplot generic; graphics::matplot is not
generic. And a coded methods for x of class numeric, matrix, Date and
POSIXct plus a default. Each calls either graphics::matplot or matlines
as appropriate after first setting up the horizontal axis properly if x
is of class Date or POSIXct.
For specific examples, consider the following taken from
invasion1 <- as.Date('1775-09-04')
invasion2 <- as.Date('1812-07-12')
earlyUS.Canada <- c(invasion1, invasion2)
Y <- matrix(1:4, 2, 2)
# horizontal axis labeled per as.numeric(earlyUS.Canada),
# NOT as Dates
# problem fixed.
AmRev.ct <- as.POSIXct1970(c('1776-07-04', '1789-04-30'))
# horizontal axis labeled per as.numeric(AmRev.ct),
# NOT as POSIXct
# problem fixed.
Thanks again for the reply.
More information about the R-devel