[R] How to plot multiple time series with different time base in same plot?
Gabor Grothendieck
ggrothendieck at gmail.com
Sat Jan 5 01:54:22 CET 2013
On Fri, Jan 4, 2013 at 5:53 PM, Matthijs Daelman
<matthijs.daelman at gmail.com> wrote:
> Hi
>
> I have to time series with a different time base.
>
> The first has only sporadic datapoints:
> 2011-02-01 15.29130
> 2011-02-08 17.60278
> 2011-02-15 17.99737
> 2011-02-22 25.43690
>
> The other has a daily datapoint:
> 2011-02-01 342.34
> 2011-02-02 68.45
> 2011-02-03 130.47
> 2011-02-04 129.86
> 2011-02-05 81.98
> 2011-02-06 77.30
> 2011-02-07 81.38
> 2011-02-08 139.95
> 2011-02-09 124.40
> ...etc.
>
> In Excel, it is fairly easy to get these two time series in one and the
> same scatter plot, with two Y-axes, but how would you do this with R?
>
> Also, I would like to obtain a data frame that contains both variables:
> 2011-02-01 342.34 15.29130
> 2011-02-02 68.45 NA
> 2011-02-03 130.47 NA
> 2011-02-04 129.86 NA
> 2011-02-05 81.98 NA
> 2011-02-06 77.30 NA
> 2011-02-07 81.38 NA
> 2011-02-08 139.95 17.60278
> 2011-02-09 124.40 NA
> etc.
>
> I can imagine that the data frame can be obtained using (nested) loops, but
> that does not seem very efficient with a large dataset.
>
Try this:
data1 <- "2011-02-01 15.29130
2011-02-08 17.60278
2011-02-15 17.99737
2011-02-22 25.43690"
data2 <- "2011-02-01 342.34
2011-02-02 68.45
2011-02-03 130.47
2011-02-04 129.86
2011-02-05 81.98
2011-02-06 77.30
2011-02-07 81.38
2011-02-08 139.95
2011-02-09 124.40"
library(zoo)
# read into zoo objects
z1 <- read.zoo(text = data1)
z2 <- read.zoo(text = data2)
# set up
plot(na.aggregate(merge(z1, zoo(, time(z2)))), type = "n", ylab = "")
# plot first series
lines(z1)
# plot 2nd series in red with red Y axis
par(new = TRUE)
plot(z2, col = "red", xaxt = "n", yaxt = "n", ylab = "")
axis(4, col = "red")
See ?plot.zoo for more examples.
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
More information about the R-help
mailing list