グラフのX軸に日付を入れる

金融系なんで、時系列データ良く扱うわけですがグラフのX軸に日付を入れる方法を毎回忘れるのでメモ。肝はaxis.Date関数。

こんな感じでコードを書く。

x <- Sys.Date() + 1:1000
y <- cumsum(rnorm(1000))
par(xaxt="n")
plot(x, y, main = "Title",xlab = "Date", ylab = "Val", type = "l")
par(xaxt = "s")
axis.Date(1, at = seq(min(x),max(x),"years"))

par(xaxt="n")で一旦PLOT時にX軸書かせないよう設定した後にPLOTし、par(xaxt = "s")でまた軸を書けるようにしてaxis.Dateで日付を書く。結果はこんなグラフになる。

最後のaxis.Dateはaxisをオーバーライドしているわけではないっぽく、単純にaxisと書くと日付が生の数値そのまんま出てくるのでだめ。

同様に月単位でも表示可能。

x <- Sys.Date() + 1:300
y <- cumsum(rnorm(300))
par(xaxt="n")
plot(x, y, main = "Title",xlab = "Date", ylab = "Val", type = "l")
par(xaxt = "s")
axis.Date(1, at = seq(min(x),max(x),"months"),format = "%Y/%m")

ちなみに日付ではなく時間で表示するaxis.POSIXctもあり。