2016-08-05 46 views
1

Ich möchte einen Zeitvektor erstellen, der um 0:05:00 Uhr beginnt und am nächsten Tag um 0:00:00 Uhr endet. Das Intervall zwischen den einzelnen Zeitpunkten beträgt 5 Minuten. Dann möchte ich ein y-t Liniendiagramm mit qplot().Wie erstellt man einen Zeitvektor ohne das Systemdatum bei Verwendung von R?

Hier ist mein R-Code:

t<-strptime('0:05:00','%H:%M:%S')+(0:287)*300 y<-rnorm(288,5,1) qplot(t,y,geom = 'line')

das Ergebnis ist wie folgt: outcom

Wie Sie sehen können, das 't' mit Systemdatum '5. August' hinzugefügt. Was ich will, ist nur 'Stunde: Minute'.

Was soll ich mit meinem Code machen?

+0

See ' Chron-Paket. Diese Frage wurde zuvor gestellt. – lmo

+0

Können Sie mir weitere Details zu dieser Lösung oder dem Link zu dieser Frage geben? –

Antwort

1

Hier wird eine Lösung mit ggplot2 und POSIX für Termine Formatierung, die leicht mit ggplot zu manipulieren:

df = data.frame(
t = seq(as.POSIXct("2016-01-01 05:00:00"), as.POSIXct("2016-01-02 00:00:00"), by = '5 min', tz = "Europe"), 
y = rnorm(229,5,1)) 

ggplot(df, aes(t, y)) + geom_line() + 
scale_x_datetime(labels = date_format('%H:%M', tz = "GMT"), breaks = date_breaks('2 hours')) 

enter image description here

+0

Fehler in check_breaks_labels (Brüche, Etiketten): konnte Funktion "date_format" nicht finden –

+0

'Bibliothek (Skalen)' – bVa

+0

Ich benutze 'df = data.frame ( t = seq (as.POSIXct (" 2016-01-01 00:05:00 "), as.POSIXct (" 2016-01-02 00:00:00 "), von = '5 min', tz =" Europa "), y = rnorm (288,5,1)) ggplot (df, aes (t, y)) + geom_line() + scale_x_datetime (Bezeichnungen = Datum_format ('% H:% M', tz = "GMT"), Pausen = date_breaks ('2 Stunden')) und das t in xlab beginnt am nächsten Tag von 16:00:00 bis 16:00:00. Warum ist das passiert? –

0

Ein Vorschlag besteht darin, die Tickbeschriftungen manuell festzulegen. Beachten Sie, dass ich im Code unten leicht Ihren Code für t und y geändert habe, sodass sie bei 0:00:00 beginnen und enden (anstatt bei 0:05:00 zu starten).

t <- strptime('0:00:00','%H:%M:%S')+(0:288)*300 
y <- c(NA, rnorm(288,5,1)) 
tlabs <- format(t, "%H:%M") 
breaks <- seq(1, 289, 72) 
qplot(as.numeric(t),y,geom = 'line') + 
    scale_x_continuous(labels=tlabs[breaks], breaks=as.numeric(t)[breaks]) + 
    xlab("t") 

Ausgang:

enter image description here

+0

Es gibt 288 Beobachtungen in y. Wenn ich '' breaks <- seq (1,288,72) '' benutze, wird die Zeit in xlab verwitwet ... –

+0

Seltsam in welchem ​​Sinn? Deshalb setze ich "t" als einen Vektor der Länge 289, nicht 288. Sie können eine "NA" an den Anfang von "y" (entsprechend der Zeit 00:00) anhängen, wenn Ihre erste Beobachtung bei 00:05 ist. –