2017-02-02 14 views
2

以下のコードはニューヨークタイムにカバーされていません。どんな考え?私はそれが投稿された答えで動作することがわかりますが、私のマシン上のコードは時間を変更しません。POSIXctのx軸HH:mm:SSをプロットする

time = as.POSIXct(c("2016-06-30 15:20:23 GMT","2016-06-30 15:20:25 GMT","2016-06-30 15:20:27 GMT"),tz = "GMT") 
attr(time, "tzone") <- "America/New_York" 
#time = as.POSIXct(format(time, tz="America/New_York"),tz ="America/New_York") 
class(time) 
value = c(10,11,12) 
    category = c(0,1,0) 
    dat = data.frame(time = time, value = value, category = category) 
    dat 
       time value category 
1 2016-06-30 11:20:23 10  0 
2 2016-06-30 11:20:25 11  1 
3 2016-06-30 11:20:27 12  0 

datは11時間を示しますが、下のプロットは15時間も表示していますか?

str(dat) 
library(ggplot2) 
ggplot(dat, aes(x=time, y = value, group = 1)) + 
    geom_point(aes (color = as.factor(category))) +geom_line() + scale_x_datetime(date_labels = "%H:%M:%S") 

スケールパッケージはas.POSIXct()tz =引数を使用して、タイムゾーンを設定するには、日付

答えて

3

外であったので、それはNY時間に変換されませんでした。あなたの入力は"GMT"にありますので、その場合はRと言います。別のタイムゾーンに変換するには、属性tzoneを適切に設定します。

x軸を日付/時刻に合わせるには、scale_x_datetime()に適切なフォーマットコードを使用します。

time = as.POSIXct(c("2016-06-30 15:20:23 GMT", 
        "2016-06-30 15:20:25 GMT", 
        "2016-06-30 15:20:27 GMT"), tz = "GMT") 
attr(time, "tzone") <- "America/New_York" 

value = c(10,11,12) 
category = c(0,1,0) 
dat = data.frame(time = time, value = value, category = category) 

library(ggplot2) 
ggplot(dat, aes(x = time, y = value, group = 1)) + 
    geom_point(aes(color = as.factor(category))) + 
    geom_line() + 
    scale_x_datetime(date_labels = "%H:%M:%S %Z") 

+0

ニースの答えが、最初の例では、その軸のラベルはクレイジーです。 2番は外出先のようです。 – thelatemail

+0

うん、それはすべての一日のデータであることを忘れていた。 'reprex() 'を介して生成された出力は、スケーリングの縮小方法をプレビューしすぎていませんでした。今実際の回答に更新されました。 –

+0

私はas.POSIXct(c( "2016-06-30 15:20:23 GMT"、 "2016-06-30 15:20:25 GMT"、 "2016-06-30 15:20:27 GMT ")、tz =" America/New_York ")、それは4時間を追加しますが、ニューヨークがGMTより遅れているので、時間を減算する必要があります。私はGMT時間を取って、GMT時間より常に少なくなるニューヨークの時間を得たいと思っています – user3022875

関連する問題