farbige Zeitreihe

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

farbige Zeitreihe

Beitrag von retep »

Hallo,

ich möchte gerne im Forum folgende Frage, mit der Bitte um Lösung stellen:

Der vorliegende Datensatz ist eine Zeitreihe des deutschen Wetterdienstes (DWD).
Die Grafik soll die Summe der monatlichen Niederschlagshöhe pro Monat für
den Zeitraum 2005 - 2021 abbilden.

Hier das Skript:

Code: Alles auswählen


library(lubridate)
library(tsbox)
library(tidyverse)
library(hrbrthemes)

Test_Data_DWD%>%
mutate(Year = as.numeric(format(MESS_DATUM, "%Y")),
       Quarter = quarters(MESS_DATUM),
       Month = month(MESS_DATUM, label = TRUE),
       Week = week(MESS_DATUM),
       Day = wday(MESS_DATUM, label = TRUE))%>%
  rename(Niederschlag = RS.Niederschlagshoehe) %>%
  select(Year, Quarter, Month, Week, Day, Niederschlag)%>%
  mutate(across(starts_with(c("Day", "Month", "Quarter")), as.factor))%>%
  mutate(Day = factor(Day, levels = c("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" ))) %>%
  group_by(Year, Month)%>%
   filter(between(Year, 2005, 2021))%>%
   summarise(
    Summe=sum(Niederschlag, na.rm = TRUE))%>%
  ggplot(aes (Month, Summe, group = Year, color = Year))+ 
  geom_line()+
  #scale_fill_brewer(palette="Paired", guide = none)+        # Fehlermeldung bei Aktivierung der Zeile
       labs(title = "Monatliche Niederschlagsumme",
       subtitle = "Zeitraum 2005 - 2021\
Stations-ID = , N= 6209",
       caption = "Data source: DWD",
       x= "Monat", y= "Monatliche Niederschlagsumme [mm]",
       tag = "")+
       theme_ipsum(base_size = 15)+
       theme(legend.position="bottom")


Soweit funktioniert alles, aber die einzelnen Zeitreihen würde ich gerne farbig abbilden.
Für jedes Jahr eine Farbe, welche möglichst deutlich voneinander unterscheidbar sein sollte.
Bei dem Versuch kommt aber eine Fehlermeldung:

Error in as.vector(x, „character") :
cannot coerce type 'closure' to vector of type 'character'

Ich ahne zwar, was der Fehler bedeutet, habe aber keinen Plan, wie ich zu
einer Lösung komme.

Vielleicht kann mir jemand hoffentlich im Forum helfen. Jede Hilfe ist willkommen!

Vielen Dank für Eure Mühe.

retep
Dateianhänge
Test_Data_DWD.txt
(1.23 KiB) 63-mal heruntergeladen
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: farbige Zeitreihe

Beitrag von Athomas »

Der Anhang ist ein Programm als Textdatei!?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: farbige Zeitreihe

Beitrag von EDi »

Error in as.vector(x, „character") :
cannot coerce type 'closure' to vector of type 'character'

Ich ahne zwar, was der Fehler bedeutet, habe aber keinen Plan, wie ich zu
einer Lösung komme.
Der Fehler kommt wenn man eine Funktion (auch 'closure' genannt) an ein argument übergibt das einen 'character' erwartet.

Meine statische Code analyse (gibt ja kein reproduzierbared beispiel), ergibt das die Fehlermeldung also durch

Code: Alles auswählen

guide = none
kommt, welches vermutlich

Code: Alles auswählen

guide = "none"
lauten sollte um keine Legende anzuzeigen.
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.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: farbige Zeitreihe

Beitrag von bigben »

EDi hat geschrieben: Sa Jan 14, 2023 5:43 pm

Code: Alles auswählen

guide = none
kommt, welches vermutlich

Code: Alles auswählen

guide = "none"
lauten sollte um keine Legende anzuzeigen.
Wenn das das Problem ist, dann würde man das beim Erstellen eines ausführbares Minimalbeispiels zwangsweise lokalisieren. Sorry, musste raus.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Re: farbige Zeitreihe

Beitrag von retep »

Hallo Edi,

vielen Dank für die Mühe! Ich habe den Monat als character variable umgewandelt leider der Fehler ist weg aber die farbliche UNterteilung der Jahre kommt immer noch nicht:

Code: Alles auswählen


library(lubridate)
library(tsbox)
library(rdwd)
library(tidyverse)
library(hrbrthemes)

clim = rio::import("DWD_Data.txt")

clim%>%
mutate(Year = as.numeric(format(MESS_DATUM, "%Y")),
       Quarter = quarters(MESS_DATUM),
       Month = month(MESS_DATUM, label = TRUE),
       Week = week(MESS_DATUM),
       Day = wday(MESS_DATUM, label = TRUE))%>%
  rename(Niederschlag = RS.Niederschlagshoehe) %>%
  select(Year, Quarter, Month, Week, Day, Niederschlag)%>%
  mutate(across(starts_with(c("Day", "Month", "Quarter")), as.factor))%>%
  mutate(Day = factor(Day, levels = c("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" ))) %>%
  #as_tibble()
  group_by(Year, Month)%>%
  #filter (Year %in% c("2019", "2020", "2021"))%>%
  #filter(Jahr == "2018", Monat == "Nov")%>%
  filter(between(Year, 2005, 2021))%>%
   summarise(
    Summe=sum(Niederschlag, na.rm = TRUE))%>%
    mutate(across(starts_with("Month"), as.character))%>%
    ggplot(aes (Month, Summe, group = Year, color = Year))+ 
  #scale_fill_brewer(palette="Paired", guide = "none")+
  geom_line()+
       labs(title = "Monatliche Niederschlagsumme",
       subtitle = "Zeitraum 2005 - 2021\
Stations-ID = , N= 6209",
       caption = "Data source: DWD",
       x= "Monat", y= "Monatliche Niederschlagsumme [mm]",
       tag = "")+
       theme_ipsum(base_size = 15)+
       theme(legend.position="bottom")
       
der code ergibt folgende Grafik im Anhang.

Ich hätte gerne die Jahre farblich. GIbt es da eine Möglichkeit?

Vielen Dank für deine Mühe!

retep
Dateianhänge
DWD.png
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: farbige Zeitreihe

Beitrag von EDi »

Hallo Edi,

vielen Dank für die Mühe!
Gern geschehen! Leider fehlt immernoch das reproduzierbare Beispiel.
Ich habe den Monat als character variable umgewandelt leider der Fehler ist weg aber die farbliche UNterteilung der Jahre kommt immer noch nicht:
Monat bringt dir ja nichts - du willst ja "Year" zum einfärben nutzen. Also: Year zum factor (flexibler als character) und gut ist.

Tipp nebenbei:

Trenne die Datenaufbereitung und das plotten. Das macht meiner Meinung nach den code lesbarer.
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.
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Re: farbige Zeitreihe

Beitrag von retep »

Gern geschehen! Leider fehlt immer noch das reproduzierbare Beispiel.
Ich habe doch den vollständigen Code inkl. Textdatei und der Importfunktion eingefügt! Zählt dies nicht als reproduzierbares Beispiel?
Monat bringt dir ja nichts - du willst ja "Year" zum einfärben nutzen. Also: Year zum factor (flexibler als character) und gut ist.
Hat funktioniert! Vielen Dank für die schnelle Hilfe!

VG

retep
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: farbige Zeitreihe

Beitrag von bigben »

retep hat geschrieben: So Jan 15, 2023 12:55 pmder code ergibt folgende Grafik im Anhang.

Ich hätte gerne die Jahre farblich. GIbt es da eine Möglichkeit?
Die Jahre sind ja farblich markiert, aber eben als Farbverlauf von schwarz nach blau. Ggplot2 erkennt, dass Year einen Zahlenwert darstellt und versucht, durch den Farbgradienten die Reihenfolge zu erhalten. Du kannst entweder versuchen, durch eine bessere Farbpalette mehr Kontrast schaffen, oder auf den Gradienten zugunsten deutlicherer Farbunterschiede verzichten. Dazu dienst EDis Vorschlag, die Jahreszahlen in einen Factor umzuwandeln. Danach hast Du viel mehr Kontrast, siehst den Farben aber nicht mehr an, welche Kurven aus "nahen" oder "entfernten" Jahren stammen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: farbige Zeitreihe

Beitrag von bigben »

retep hat geschrieben: So Jan 15, 2023 4:30 pm Ich habe doch den vollständigen Code inkl. Textdatei und der Importfunktion eingefügt! Zählt dies nicht als reproduzierbares Beispiel?
Hi,

wenn Dein Code mit "clim = rio::import("DWD_Data.txt")" beginnt, dann kann den Rest keiner reproduzieren, der nicht über die Datei "DVD_Data.txt" verfügt.
Außerdem ist es immer wünschenswert, den Code auf den Teil einzudampfen, der wirklich notwendig ist, um das Problem zu reproduzieren. Während man das macht, findet man auch viele Fehler selbst (s.o.). Ganz gut beschrieben ist das hier: https://stackoverflow.com/help/minimal- ... le-example
Hinweise wie man dann die Daten in R anbieten kann hat EDi mal hier hinterlegt: viewtopic.php?t=11

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
retep
Beiträge: 99
Registriert: Do Sep 06, 2018 7:50 pm

Re: farbige Zeitreihe

Beitrag von retep »

Hi,

hab vielen Dank! Ich werde mir das nochmal – fürs nächste Mal zu Gemüte führen!

VG

retep
Antworten