読者です 読者をやめる 読者になる 読者になる

ggplot2でx軸にPOSIXct型を使う

ggplot2のscale_x_datetime()とscalesのdate_format()を組み合わせるといい感じに軸の書式を設定できる。

サンプルデータ

> x <- as.POSIXct(c("2016-11-07 19:00:00 JST", 
                    "2016-11-07 20:00:00 JST"))
> y <- c(1, 2)
> df <- data.frame(Time = x, Value = y)
> df
                 Time Value
1 2016-11-07 19:00:00     1
2 2016-11-07 20:00:00     2

プロット

  • 目盛間隔を10分、時刻の形式をHH:MM:SSにする

scale_x_datetime()において、date_breaksに"10 mins"を、labelsにdate_format()を指定する。date_format()ではデフォルトのタイムゾーン(引数tz)が"UTC"になっているので注意する必要がある。日本時間を使う場合は"Asia/Tokyo"を指定する。

    • tz = "Asia/Tokyo" とした場合
> p <- ggplot(df, aes(x = Time, y = Value))
> p + geom_point() + 
      scale_x_datetime(date_breaks = "10 mins", 
                       labels = date_format(format = "%H:%M:%S", 
                                            tz = "Asia/Tokyo"))

f:id:umanohoneo:20161108001412p:plain

    • tz を指定しない場合 (tz = "UTC")
> p <- ggplot(df, aes(x = Time, y = Value))
> p + geom_point() + 
      scale_x_datetime(date_breaks = "10 mins", 
                       labels = date_format(format = "%H:%M:%S"))

f:id:umanohoneo:20161108002733p:plain