ggplot: Datum auf x-Achse plotten

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
flip_0207
Beiträge: 23
Registriert: Do Dez 06, 2018 7:46 pm

ggplot: Datum auf x-Achse plotten

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

Re: ggplot: Datum auf x-Achse plotten

Beitrag 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')
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.
flip_0207
Beiträge: 23
Registriert: Do Dez 06, 2018 7:46 pm

Re: ggplot: Datum auf x-Achse plotten

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

Re: ggplot: Datum auf x-Achse plotten

Beitrag 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...
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