Seite 1 von 1

Datum auf x-Achse

Verfasst: Do Okt 26, 2017 2:02 pm
von jessi
Hallo zusammen,

ich versuche eine Zeitreihe zu plotten und möchte dazu gerne das Datum auf die x-Achse "schreiben". Dazu habe ich den Befehl "axis.POSIXct" gefunden. Leider funktioniert das aber nicht so wirklich.

Code: Alles auswählen

plot(T, axes=F, xlab="Datum", ylab="Temperatur")

 axis.POSIXct(1, at=seq(from=as.POSIXct(strptime("2011-01-01", format = "%Y-%m-%d")), to=as.POSIXct(strptime("2011-01-31", format = "%Y-%m-%d")), by = "day"))
 axis(2)
Der Plot und die y-Achse werden angezeigt, die x-Achse fehlt aber. Eine Fehlermeldung bekomme ich auch nicht. Jetzt weiß ich nicht, wie und wo ich den Fehler suchen soll :?:

Danke für eure Hilfe und liebe Grüße,
Jessi

Re: Datum auf x-Achse

Verfasst: Do Okt 26, 2017 6:44 pm
von bigben
Gib mal ein Beispiel für T, damit wir das ausprobieren können: https://stackoverflow.com/help/mcve

Mindestens aber das Ergebnis vin

Code: Alles auswählen

str(T)
head(T)
summary(T)
LG,
Bernhard

Re: Datum auf x-Achse

Verfasst: Fr Okt 27, 2017 8:16 am
von jessi
Hallo.

Danke für deine Antwort.

Ich arbeite mit folgenden Daten

Code: Alles auswählen

str(df_meteo)
 $ Datum  : Factor w/ 4032 levels "1999-01-01 0:00:00", "1999-01-01 0:00:30, "1999-01-01 00:01:00" ..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Wind     : num  4.5 4.4 4.7 4.7 4.8 4.8 4.8 4.8 4.8 4.8 ...
 $ Temp     : num  0.5 0.9 1.3 1 1.2 1.4 1.3 1.7 1.3 1.8 ...

T <- df_meteo$Temp

T <- c(0.5, 0.9,  1.3,  1.0,  1.2,  1.4,  1.3,  1.7,  1.3,  1.8,  2.2,  2.1,  2.0,  1.1, 0.9,  1.1,  1.5,  1.1,  0.6,  0.7,  1.8,  2.0,  1.0,  1.0,  1.1,  0.7,  1.5,  2.2, 2.5,  1.8,  0.8,  0.7,  0.8,  0.8,  0.9,  1.3,  1.7,  1.0,  1.0,  0.9,  1.4, 1.4, 1.0,  0.9,  0.3,  1.5,  1.6,  1.7,  1.3,  0.7,  0.9,  0.4,  0.5,  0.4,  0.4,  0.4, 0.7,  1.2,  2.2,  1.1,  1.1,  1.0,  0.9,  1.4, 0.6,  0.2,  2.1,  0.4,  1.0,  0.5, 1.2,  1.2,  0.9,  1.2,  1.9,  2.1,  1.5,  1.7,  1.8,  1.3,  1.7,  1.7,  1.8,  2.1) 
  
summary(T)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   1.200   2.200   2.519   3.500  10.400 
Das File ist so aufgebaut, dass ich alle 30 Minuten Messdaten habe, auf der x-Achse reicht es aber, wenn der Tag steht, da geht es nur darum, dass man die Werte ungefähr zuordnen kann. Momentan steht auf der x-Achse der Index von 0 bis 4000. Die y-Achse lässt sich mit

Code: Alles auswählen

axix(2, c(0,30,5))
Ohne Probleme anzeigen.

Danke fürs Drüberschauen :)
Grüße, Jessi

Re: Datum auf x-Achse

Verfasst: Fr Okt 27, 2017 9:43 am
von EDi

Code: Alles auswählen

 $ Datum  : Factor w/ 4032 levels "1999-01-01 0:00:00", "1999-01-01 0:00:30, "1999-01-01 00:01:00" ..: 1 2 3 4 5 6 7 8 9 10 ...
Ich würde das zuerst in ein Datumsformat umwandeln und die Spalte direkt auf die x Achse abtragen, anstatt den index.

Re: Datum auf x-Achse

Verfasst: Sa Okt 28, 2017 8:02 pm
von jessi
Hallo.

Ich hab das Datum jetzt folgenderweise umgewandelt

Code: Alles auswählen

df_meteo$Datum <- as.POSIXct(strptime(df_meteo$Datum, format="%Y-%m-%d %H:%M:%S", tz = "UTC"))

str(df_meteo)
 $ Datum    : POSIXct, format: "1999-01-01 00:00:00" 1999-01-01 00:30:00" ...
 $ Wind      : num  4.5 4.4 4.7 4.7 4.8 4.8 4.8 4.8 4.8 4.8 ...
 $ Temp      : num  0.5 0.9 1.3 1 1.2 1.4 1.3 1.7 1.3 1.8 ...
 
 plot(df_meteo$Wind ~ df_meteo$Datum, type = "l")
Das Datum steht nun auf der x-Achse, beginnend mit Jan 03, Jan 08, Jan13 ... Leider gelingt es mir noch nicht, die x-Achse etwas "schöner" zu gestalten. So das das Datum mit dem ersten des Monats beginnt und mit dem letzten Ende.

Mit der Code-Zeile

Code: Alles auswählen

axis.POSIXct(1, at=seq(from=as.POSIXct(strptime("2011-01-01", format = "%Y-%m-%d")), to=as.POSIXct(strptime("2011-01-31", format = "%Y-%m-%d")), by = "day")) 
wird die x-Achse auch weiterhin nicht angezeigt.

Danke für eure weiteren Tipps :)

Alles Liebe,
Jessi

Re: Datum auf x-Achse

Verfasst: So Okt 29, 2017 11:55 am
von EDi
Da kein reproduzierbares Beispiel vorhanden ist, habe ich mir selbst eines erstellt.
Das musst du nur anpassen...

Code: Alles auswählen

# some data
start <- as.POSIXct('1999-01-01 0:00:00')
end <- as.POSIXct('1999-01-31 0:00:00')
x <- seq(start, end, length.out = 1000)
y <- rnorm(1000)
df <- data.frame(x, y)
plot(y ~ x, data = df) #:(


plot(y ~ x, data = df, xaxt = 'n')
axis.POSIXct(1, at = seq(start, end, by = '5 days')) #:)