複数系列データを持つxtsクラスのオブジェクトを色付きで描画する方法
Twitter上で
という質問をいただいたので、サンプルコード含めてここで回答します。
今回は描画したいサンプルデータはもう既に手元にあるという状況設定で、以下のようなサンプルデータを作成しておきました。
これを描画したいとします。
> library(xts) > x <- xts(cbind(1:10,1:10+1), order.by = Sys.Date() + 0:9) > x [,1] [,2] 2012-01-10 1 2 2012-01-11 2 3 2012-01-12 3 4 2012-01-13 4 5 2012-01-14 5 6 2012-01-15 6 7 2012-01-16 7 8 2012-01-17 8 9 2012-01-18 9 10 2012-01-19 10 11
これを単純にplot関数、あるいはplot.xts関数とxtsオブジェクトであることを明示的に指定してplotしようとすると・・・
> plot(x) 警告メッセージ: In plot.xts(x) : only the univariate series will be plotted > plot(x, col = "red") 以下にエラー axis(1, at = xycoords$x, labels = FALSE, col = "#BBBBBB", ...) : 仮引数 ”col” が複数の実引数にマッチしました 追加情報: 警告メッセージ: In plot.xts(x, col = "red") : only the univariate series will be plotted
と、質問でいただいたようなエラーが出る*1。
これを回避するために(私は)
> plot.zoo(x, col = c("red", "blue"))
とzooクラスのオブジェクトだとしてplotさせて凌いでいます*2。
この二枚plot・・・というかマルチプロット?が嫌な場合はplot.typeオプションでsingleを指定して
> plot.zoo(x, col = c("red", "blue"), plot.type = "single")
とするのがよいと思います。。結果は
となります。その他使えるオプションはplot.zooのHelpを引いてみてください。
最後に、これ以外のもっといいやり方をご存知の方がいたら教えてください・・・
xtsオブジェクト・パッケージに関するLINK&スライド
xtsパッケージで時系列解析
View more presentations from teramonagi