Seite 1 von 1

ggplot: Datum auf x-Achse plotten

Verfasst: Di Jan 29, 2019 7:26 pm
von flip_0207
Hallo

Habe folgendes Problem:

Ich möchte die Wuchshöhe von Pflanzen in Abhängigkeit vom Datum und von der Sorte darstellen. Auf die x-Achse soll das Datum, auf die y-Achse die Wuchshöhe und die Sorte möchte ich anhand der Farbe darstellen. Mein Skript sieht so aus:

ggplot(Rohdaten, aes(x = Datum, y = Höhe..cm., fill = Sorte))+
geom_boxplot()+
scale_x_date(date_labels = "%Y-%m-%d")

Datum ist in der Rohdaten Tabelle bspw. als "12.02.2017" eingetragen. Habe zwei Varianten für den Datentyp probiert:

1) Rohdaten$Datum <- as.POSIXct(Rohdaten$Datum,
format = "%d.%m.%y",
tz = "GMT")

2)Rohdaten$Datum <- as.Date(Rohdaten$Datum)

Wenn ich statt des realen Datums den Termin (character), also statt "12.02.2017" z.B. "Termin 1" nutze, erhalte ich den Boxplot, den ich haben möchte. Wichtig wäre aber das tatsächliche Datum, gerne im Format "Tag.Monat.Jahr". Kann mir dazu jemand weiterhelfen?

Gruß, Flip

Re: ggplot: Datum auf x-Achse plotten

Verfasst: Mi Jan 30, 2019 8:09 am
von EDi
Mangels eines reproduzierbaren Beispiels, kann ich leider nicht genau sagen woran es bei dir hängt (Kein Datumstyp? group vergessen?, ...).

Aber hier ein Beispiel das funktioniert:

Code: Alles auswählen

# some data
df <- expand.grid(date = c("12.02.2017", "13.02.2017", "14.02.2017"), 
                  rep = 1:5,
                  stringsAsFactors = FALSE)
df$y <- rnorm(nrow(df))

# some cleaning
df$date <- as.Date(df$date, format = '%d.%m.%Y')

# plotting
library(ggplot2)
ggplot(df, aes(x = date, y = y, group = date)) +
  geom_boxplot() +
  scale_x_date(date_labels = '%d.%m.%Y')

Re: ggplot: Datum auf x-Achse plotten

Verfasst: Mi Jan 30, 2019 4:40 pm
von flip_0207
Danke, damit kann ich das Problem schon einmal eingrenzen.
EDi hat geschrieben: Mi Jan 30, 2019 8:09 am Mangels eines reproduzierbaren Beispiels, kann ich leider nicht genau sagen woran es bei dir hängt (Kein Datumstyp? group vergessen?, ...).
Mein Datum wird als Factor eingelesen, Format ist dann "12.06.18", "17.06.18" usw.

Damit ändere ich den Datentyp:

Code: Alles auswählen

Rohdaten <- read.csv2("Auswertung_Versuch.csv")
Rohdaten$Datum <- as.Date(Rohdaten$Datum, format = '%d.%m.%Y')
Mein Datum ist dann im Format Date, also "0018-06-12", "0018-06-17" usw.

Den Schritt kann ich noch nicht nachvollziehen:

Code: Alles auswählen

df$y <- rnorm(nrow(df))
Der Schritt funktioniert schon einmal:

Code: Alles auswählen

ggplot(Rohdaten, aes(x = Datum, y = Höhe, group = Datum, fill = Sorte))+
  geom_boxplot()+
  scale_x_date(date_labels = "%d.%m.%Y")
Problem dabei ist, dass ich die Wuchshöhe (Höhe) auf der y-Achse haben möchte, auf der x-Achse das Datum und die Boxplots meine Sorten representieren sollen. Bei 6 Sorten müsste ich für jedes Datum also 6 Boxplots haben. Jetzt bekomme ich für jedes Datum einen Boxplot, der die Daten aller Sorten nutzt. Auch wenn ich

Code: Alles auswählen

group = Datum
weglasse, passt die Grafik noch nicht.

Re: ggplot: Datum auf x-Achse plotten

Verfasst: Mi Jan 30, 2019 8:54 pm
von EDi
Den Schritt kann ich noch nicht nachvollziehen:
Da du kein reproduzierbares Beispiel mit uns geteilt hast, musste ich mir selbst eins erstellen. Dabei hab ich wohl das kleine Detail
die Boxplots meine Sorten representieren sollen
übersehen hab. Genau aus dem Grund sollst du, als Fragensteller ja ein solches Beispiel erstellen.

Da ich jetzt aber keine Lust mehr habe, das reproduzierbare Beispiel anzupassen, kann ich nur sagen, dass ich group = interaction(Datum, Sorte) mal probieren würde (=boxplots für jede datums x sorte kombination).

Facets könnte auch was für dich sein...