結論
-
date_format()
を使おう
だめな例1
library(ggplot2)
library(scales)
# データを作る
df1 <- data.frame(date = c(as.POSIXct("2016-01-01 10:00:00"),as.POSIXct("2016-01-02 6:00:00"),as.POSIXct("2016-01-02 23:00:00")),value = c(10,30,20))
# データを確認する
df1
date value
1 2016-01-01 10:00:00 10
2 2016-01-02 06:00:00 30
3 2016-01-02 23:00:00 20
# ggplot
ggplot(df1,aes(x=date, y = value)) + geom_point() + scale_x_datetime(breaks = date_breaks("hour"),date_labels = "%Y-%m-%d %H") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
だめな例2
# データを作る
df2 <- data.frame(date = c(as.POSIXct("2016-01-01 10:00:00", tz="Japan"),as.POSIXct("2016-01-02 6:00:00", tz="Japan"),as.POSIXct("2016-01-02 23:00:00", tz="Japan")),value = c(10,30,20))
# データを確認する
df2
date value
1 2016-01-01 10:00:00 10
2 2016-01-02 06:00:00 30
3 2016-01-02 23:00:00 20
# ggplot
ggplot(df2,aes(x=date, y = value)) + geom_point() + scale_x_datetime(breaks = date_breaks("hour"),date_labels = "%Y-%m-%d %H") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
良い例1
ggplot(df1,aes(x=date, y = value)) + geom_point() + scale_x_datetime(breaks = date_breaks("hour"), labels = date_format("%Y-%m-%d %H")) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
良い例2
ggplot(df2,aes(x=date, y = value)) + geom_point() + scale_x_datetime(breaks = date_breaks("hour"), labels = date_format("%Y-%m-%d %H", tz = "Asia/Tokyo")) + theme(axis.text.x = element_text(angle = 45, hjust = 1))