2016-03-25 12 views
11

Ich verbrachte einige Zeit versuchen, herauszufinden, warum die Stunden Ticks verschoben wurden, wenn scale_x_datetime angewendet wurde. Ich habe versucht, die Zeitzone anzugeben, als die Spalte Datum/Uhrzeit erstellt wurde. Ich habe ggplot und scale_x_datetime() aus den Paketskalen verwendet. Die Stundenzähler waren falsch, welcher Datenpunkt nicht mit der Uhrzeit in der Spalte Datum/Uhrzeit übereinstimmte.R: as.POSIXct Zeitzone und scale_x_datetime Probleme in meinem Dataset

Hier sind einige Verfahren zum Umgang mit meinem Datensatz.

DF$DateTime<-as.POSIXct(DF$timestamp,format="%m/%d/%y %H:%M", tz="America/Toronto") 
    DF$Date<-as.Date(DF$DateTime) 

    lims <- as.POSIXct(strptime(c("2015-07-21 00:00","2015-07-23 00:00"), format = "%Y-%m-%d %H:%M"), tz="America/Toronto")  

    ggplot(DF) + geom_line(aes(x=DateTime, y=-Diff,group=Date)) + scale_x_datetime(limits =lims, breaks=date_breaks("2 hour"), labels=date_format("%m/%d %H:%M")) 

Vermisse ich hier etwas ?? Bitte hilf mir, es herauszufinden. Vielen Dank!

Antwort

11

Die Funktion date_format() benötigt ein tz-Argument, das standardmäßig auf "UTC" gesetzt ist. Daher werden Ihre Etiketten in UTC konvertiert. Um die Zeitzone „Amerika/Toronto“ zu verwenden, können Sie folgendes tun:

scale_x_datetime(limits = lims, breaks = date_breaks("2 hour"), 
    labels = date_format("%m/%d %H:%M", tz = "America/Toronto")) 

Dieses Argument wurde mit Version 0.2.5 eingeführt. Code, der date_format() verwendet, um Plots in anderen Zeitzonen als UTC zu erstellen, muss nach dem Update geändert werden.

+2

Ich muss die tz im data_format angeben. Es gibt einen Typ in deinem Beitrag. Es sollte so sein: Etiketten = Datum_format ("% m /% d% H:% M", tz = "Amerika/Toronto") –

+0

@ Kuo-HsienChang Sie haben Recht und ich korrigierte den Fehler. Das tut mir leid! – Stibu

Verwandte Themen