2017-03-09 3 views
0

Ich habe einen tibble Datenrahmen für die Zeitreihenanalyse. Ich benutze das ggseas-Paket für das Erstellen eines zerlegten saisonalen Diagramms. Hier ist der Code für reproduzierbare Daten.Chargengenerierung von Plots mit ggplot2/ggseas für verschiedene Produkte

sample_dt <- expand.grid(
Product=c("A","B","C","D"), 
Region=c("Asia","Africa","North America","South America","Europe"), 
YearMonth=seq.Date(from = as.Date("2012-1-1"),to = as.Date("2016-12-1"),by ="month")) 
sample_dt$ActualDemand <- runif(2000,20000,n=1200) 
#### arrange for better understanding 
sample_dt <- sample_dt%>% 
    arrange(Product,Region) 

und unterhalb der Code I Grundstück für ein Produkt zu erzeugen, verwenden, genauer gesagt, ein Produkt aus:

sample_dt%>% 
    filter(Product=="A")%>% 
    ggsdc(aes(x=YearMonth,y=ActualDemand,colour=Region),frequency=12,s.window=7, 
    method="stl")+geom_line()+ 
ggtitle("Time Series for Product A") 

Das Problem, das ich habe ist, dass ich 1000 verschiedene Produkte haben, würde Ich mag um ein Diagramm für jedes Produkt zu erstellen und es in dem aktuellen Arbeitsverzeichnis als ein beliebiges verfügbares Bildformat zu speichern. Aber ich brauche den Titel der Handlung, um mit dem Produkt, das ich gezeichnet habe, zu ändern. für Produkt B sollte das ggtitle "Zeitreihe für Produkt B" sein. Ist es möglich, dass R diese Art von Arbeit macht? Ich habe auch ein Beispielplot beigefügt. Danke!

Antwort

0

Nicht sicher, ob das gemeint ist, aber wenn Sie eine Schleife verwenden, um jedes Produkt zu plotten, können Sie einfach einfügen, um einen neuen Titel für jede Schleife zu erstellen. z.B .:

prod = "A" 
plotname = paste("Time Series for Product",prod) 


sample_dt%>% 
filter(Product=="A")%>% 
ggsdc(aes(x=YearMonth,y=ActualDemand,colour=Region),frequency=12,s.window=7, 
method="stl")+geom_line()+ 
ggtitle(plotname) 

EDIT nun die Schleife einschließlich

prod_id = c("A","B","C","D") 

for(i in 1:length(prod_id)) { 
    plotname = paste("Time Series for Product",prod_id[i]) 

    p1 = sample_dt%>% 
    filter(Product==prod_id[i])%>% 
    ggsdc(aes(x=YearMonth,y=ActualDemand,colour=Region),frequency=12,s.window=7,method="stl")+geom_line() + ggtitle(plotname) 
    ggsave(paste0(plotname,".jpg"), plot = p1) 

} 
+0

Hallo timfaber, vielen Dank für Ihre Hilfe. Eigentlich versuche ich, separate Plots für Produkt A, B und C zu erstellen und die Produktnamen im Titel der erzeugten Plots zu zeigen und dann jedes Plot für die weitere Kommunikation mit den Stakeholdern auf Festplatte zu speichern. –

+0

Hallo Timfaber, mein Problem ist perfekt gelöst mit Ihrem Vorschlag. Es ist unglaublich, DANKE! –

+0

Ihr Code arbeitete sehr gut für mich. Nur eine kurze Frage für Sie: Warum müssen Sie Code schreiben: 'plotname = plotname' und dann mit Einfügen-Funktion versehen. Wie versteht man das? –

Verwandte Themen