2016-07-22 4 views
1

Ich möchte ACFs mit einem Farbschema meiner Wahl produzieren.Coloring ACF ggplot Objekt

das Vorhersage-Paket erlaubt mir, ggplot2 Graphen der ACF zu erstellen. Ich kann fast jeden Aspekt des resultierenden Graphen ändern, mit Ausnahme der Linien des ACF und der Konfidenzgrenzen.

Hier ist Beispielcode und die resultierende Handlung:

acf <- forecast::ggAcf(rnorm(100)) 

acf + ggtitle("Autocorrelation Function (ACF)") + xlab("Lag") + ylab("ACF") + 
    theme(
    panel.background = element_rect(fill="#5C5D67"), 
    axis.title = element_text(colour="#FFFAFF", size = 12), 
    axis.title.x = element_text(colour="#FFFAFF", size = 12),  
    axis.text = element_text(colour="#FFFAFF", size = 12), 
    axis.text.y = element_text(colour="#FFFAFF", size = 12), 
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_line(color="#1E1E1E"), 
    plot.title = element_text(colour="white"), 
    plot.background = element_rect(fill = "#1e1e1e") 
) 

enter image description here

Wie ändere ich die Farben der ACF Linien von einigen etwas anders als der Standard schwarz? Und wie ändere ich die Vertrauensgrenzen auf etwas anderes als das Standardblau?

Antwort

4

Die Funktion ggAcf basiert auf autoplot.acf. Sie können diese Funktion über forecast:::autoplot.acf durchsuchen. Wenn Sie dies tun, werden Sie feststellen, dass die Farben der Segmente und horizontalen Linien in der Funktion fest codiert sind, ohne dass eine Option zur Steuerung vorhanden ist.

Um die Farben zu ändern, ohne eine eigene neue Funktion zu erstellen, können Sie mit den Funktionen von ggplot2 neue Ebenen über dem ursprünglichen Plot hinzufügen. Sie müssen die Konfidenzintervalle jedoch "by-hand" mit der gleichen Formel wie in autoplot.acf berechnen.

library(forecast) 
library(ggplot2) 

# Calculate confidence interval limits 
ci2 = qnorm((1 + .95)/2)/sqrt(length(rnorm(100))) 

# Change line color to green, CI color to purple 
ggAcf(rnorm(100)) + 
    geom_segment(lineend = "butt", color = "green") + 
    geom_hline(yintercept = 0, color = "green") + 
    geom_hline(yintercept = c(ci2, -ci2), color = "purple", linetype = "dashed") 

enter image description here

Beachten Sie, dass für die „Hinzufügen von Schichten auf der Oberseite der vorherigen Schichten“ work-around rechts schauen müssen Sie das gleiche wie in der ursprünglichen Plan, die Linientypen zu halten.

+0

Das funktioniert. Vielen Dank! – Warner