Grafik mit Punkten für 4Quartal

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
patite
Beiträge: 27
Registriert: Sa Jul 20, 2019 4:36 pm

Grafik mit Punkten für 4Quartal

Beitrag von patite » Di Okt 01, 2019 4:44 pm

Hallo
Der Datensatz ausbeer ist in der Bibliothek fpp2
beer <- window(ausbeer, start = 1992)
plot(beer)
Die Grafik ist im Anhang
ich möchte , dass die Werte für 4Quartal rot hervorgehoben werden, und alle Jahre auf der X-Achse ersichtlich sind.
Wie geht es das?
Vielen Dank
Patite
Dateianhänge
beer.png

Benutzeravatar
EDi
Beiträge: 887
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Grafik mit Punkten für 4Quartal

Beitrag von EDi » Di Okt 01, 2019 11:06 pm

Darf es ggplot2 sein?

Code: Alles auswählen

library("fpp2")
library("ggplot2")
beer <- window(ausbeer, start = 1992)

df <- fortify(beer)
ggplot(data = df, aes(x = x, y = y, color = x %% 1 %in% c(0.75, 0.00))) +
  geom_line(aes(group = 1)) +
  scale_x_continuous(breaks = seq(min(df$x), max(df$x))) +
  theme(axis.text.x = element_text(angle = -90, vjust = 0.5)) 
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.

Hufeisen
Beiträge: 122
Registriert: Fr Aug 31, 2018 6:34 pm

Re: Grafik mit Punkten für 4Quartal

Beitrag von Hufeisen » Mi Okt 02, 2019 4:09 pm

Ach jetzt habe ich es in base R gemacht und EDi war schneller. Du musst mal gucken, ob der Versatz im letzten plot korrekt ist bzw. optisch deinen Anforderungen entspricht. Ich habe alles schrittweise gemacht, damit Du alles nachvollziehen kannst.

Code: Alles auswählen

# Paket installieren und laden
install.packages("fpp2")
library(fpp2)

# Daten einlesen
str(beer) # beer ist der Name eines mitgelieferten Datensatzes
str(ausbeer)
aus_beer <- window(ausbeer, start = 1992) # es empfiehlt sich eine eigene Bezeichnung

# plot vorbereiten
par(mfrow = c(2, 2))

# Dein plot
plot(aus_beer, main = "Dein plot")

# plot mit manuellen Achsen
plot(aus_beer, axes = FALSE, ylim = c(300, 600), main = "Dein plot mit neuen Axen") # ohne Axen, aber mit definiertem Wertebereich für y
axis(side = 1, tick = TRUE, at = c(1992:2010), las = 2) # 1 = unten
axis(side = 2, tick = TRUE, at = c(300, 400, 500, 600), las = 2) # 2 = links, las-Argument entspricht default

# plot mit rotem Hintergrund

  # leeren Rahmen Zeichnen
  plot(aus_beer,  axes = FALSE, type = "n", ylim = c(300, 600), main = "Dein plot in rot") 

  # roten Hintergrund einfügen
  rect(xleft = par("usr") [1], xright = par("usr") [2], ybottom = par("usr") [3], ytop = par("usr") [4], col = "red")
  
  # Daten eintragen
  points(aus_beer, type = "l") # ohne Axen, aber mit definiertem Wertebereich für y
  axis(side = 1, tick = TRUE, at = c(1992:2010), las = 2) # 1 = unten
  axis(side = 2, tick = TRUE, at = c(300, 400, 500, 600), las = 2) # 2 = links, las-Argument entspricht default

# plot mit roten Segmenten

  # leeren Rahmen Zeichnen
  plot(aus_beer,  axes = FALSE, type = "n", ylim = c(300, 600), main = "Dein plot mit roten Segmenten") 
  
  # roten Hintergrund einfügen
  x_links <- par("usr") [1] + c(1:18) + 0.375
  x_rechts <- par("usr") [1] + c(1:18) + 0.625
  
  rect(xleft = x_links, xright = x_rechts, ybottom = par("usr") [3], ytop = par("usr") [4], col = "red")
  
  # Daten eintragen
  points(aus_beer, type = "l") # ohne Axen, aber mit definiertem Wertebereich für y
  axis(side = 1, tick = TRUE, at = c(1992:2010), las = 2) # 1 = unten
  axis(side = 2, tick = TRUE, at = c(300, 400, 500, 600), las = 2) # 2 = links, las-Argument entspricht default
 
Dateianhänge
Segmente plotten.png

Hufeisen
Beiträge: 122
Registriert: Fr Aug 31, 2018 6:34 pm

Re: Grafik mit Punkten für 4Quartal

Beitrag von Hufeisen » Fr Okt 04, 2019 11:22 am

Hey EDi, kannst du dir noch mal deinen Code anschauen? Im plot werden Q2 und Q3 als FALSE und Q1 und Q4 als TRUE markiert. Ich habe zur Verdeutlichung deinen plot modifiziert. Warum das passiert, ist mir schon irgendwie klar. Eigentlich sollte color = x %% 1 %in% c(0.75, 0.00)) Q4 abgrenzen, markiert aber zwei Punkte statt das Intervall um Q4. Deshalb habe ich bei mir die Rechtecke um eine halbe Intervallbreite verschoben, also um ein Achtel Jahr (0.25/2).
Ehrlich gesagt, verstehe ich die Syntax x %% 1 %in% nicht. %in% ist mir bekannt, aber nur mit Variablen. Was bedeutet die 1, wie wird die interpretiert? Was bedeutet x %%? Danke

Code: Alles auswählen

# Daten zur visuellen Kontrolle
> head(aus_beer)
     Qtr1 Qtr2 Qtr3 Qtr4
1992  443  410  420  532
1993  433  421 

# los geht's
library(fpp2)
aus_beer <- window(ausbeer, start = 1992)

# EDis Variante
  df <- fortify(aus_beer)
  ggplot(data = df, aes(x = x, y = y, color = x %% 1 %in% c(0.75, 0.00))) +
    geom_line(aes(group = 1), size = 3) +
    scale_x_continuous(breaks = seq(min(df$x), max(df$x))) +
    theme(axis.text.x = element_text(angle = -90, vjust = 0.5)) 
Dateianhänge
EDis plot.png

Antworten