Datum auf x-Achse

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Datum auf x-Achse

Beitrag 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
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Datum auf x-Achse

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: Datum auf x-Achse

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datum auf x-Achse

Beitrag 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.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Re: Datum auf x-Achse

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Datum auf x-Achse

Beitrag 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')) #:)
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten