web-dev-qa-db-ja.com

scale_x_datetimeおよび時間データを使用した制限の設定

時間のみ(日付なし)を特徴とする時系列データのプロットのx軸の境界を設定したいと思います。私の限界は:

lims <- strptime(c("03:00","16:00"), format = "%H:%M")

そして、私のggplotは正常に印刷されますが、これをscale_x_datetimeに追加すると

scale_x_datetime(limits = lims)

Error: Invalid input: time_trans works with objects of class POSIXct only

完全に再現可能な例 Rを使用して時間散布図を作成する方法

dates <- as.POSIXct(as.Date("2011/01/01") + sample(0:365, 100, replace=TRUE))
times <- as.POSIXct(runif(100, 0, 24*60*60), Origin="2011/01/01")
df <- data.frame(
  dates = dates,
  times = times
)

lims <- strptime(c("04:00","16:00"), format = "%H:%M")

library(scales)
library(ggplot2)

ggplot(df, aes(x=dates, y=times)) + 
  geom_point() + 
  scale_y_datetime(limits = lims, breaks=date_breaks("4 hour"), labels=date_format("%H:%M")) + 
  theme(axis.text.x=element_text(angle=90))
15
raphael

エラーメッセージには、as.POSIXctlims)。また、limsには日付(年、月、日)を追加する必要もあります。これは、デフォルトでは `2015であり、立入禁止だからです。

lims <- as.POSIXct(strptime(c("2011-01-01 03:00","2011-01-01 16:00"), format = "%Y-%m-%d %H:%M"))    
ggplot(df, aes(x=dates, y=times)) + 
    geom_point() + 
    scale_y_datetime(limits =lims, breaks=date_breaks("4 hour"), labels=date_format("%H:%M"))+ 
    theme(axis.text.x=element_text(angle=90))
17