From macq at llnl.gov  Thu Dec  7 22:02:11 2006
From: macq at llnl.gov (Don MacQueen)
Date: Thu, 7 Dec 2006 13:02:11 -0800
Subject: [Rd] Matplot does not work with x being POSIXt class (PR#9412)
In-Reply-To: <20061207125601.00D2257349@slim.kubism.ku.dk>
References: <20061207125601.00D2257349@slim.kubism.ku.dk>
Message-ID: <p06230913c19e2e5798f1@[128.115.153.6]>

As Peter said, matplot plots matrices. The columns of a matrix are 
vectors of numbers. A POSIXlt object is not a vector of numbers, it 
is a list. So it shouldn't work. And should not be expected to work.

But with a POSIXct object it will work.

x <- strptime(as.character(x), format="%Y-%m-%d")
## [1] "POSIXt"  "POSIXlt"
matplot( as.POSIXct(x), y)


At 1:56 PM +0100 12/7/06, gregor.gorjanc at bfro.uni-lj.si wrote:
>Hi,
>
>Matplot works with x being Date class but not POSIXt. Here is the
>example with R version 2.5.0 Under development (unstable) (2006-12-06
>r40129)
>
>Example:
>
>x <- Sys.Date() - c(1:10)
>y <- cbind(1:10, 10:1)
>class(x)
>## [1] "Date"
>matplot(x, y)
>
>x <- strptime(as.character(x), format="%Y-%m-%d")
>## [1] "POSIXt"  "POSIXlt"
>matplot(x, y)
>Error in matplot(x, y) : 'x' and 'y' must have only 1 or the same number
>of columns
>
>Additionally, matplot with x being Date class does not use apropriate
>annotation for x axis.

This is very easy to obtain:

# x is a Date object
matplot(x,y,xaxt='n')
axis.Date(1,x)

or

# x is a POSIXlt object
matplot( as.POSIXct(x), y,xaxt='n')
axis.POSIXct(1,x)

So easy, in fact, that I personally would not expect R core to spend 
time on it. One of the virtues of R is that the language is so rich 
that little tweaks like this are often very easy.

>
>Thank you!
>
>Gregor
>

-Don
-- 
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA



[Rd] Matplot does not work with x being POSIXt class (PR#9412)
Don MacQueen