2017-03-09 103 views
0

我有用於時間序列分析的tibble數據框。我使用ggseas包創建分解的季節性圖表。這裏是可重現數據的代碼。使用ggplot2/ggseas爲不同產品批量生成繪圖

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) 

以下是我使用的情節生成一個產品代碼,更具體地說,產品A:

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") 

我的問題是,我有超過1000個不同的產品,我想爲每個產品生成一個圖表,並將其保存到當前工作目錄中,作爲可用的圖像格式。但我需要標題的陰謀改變與我繪製的產品。即對於產品B,該標誌應該是「產品B的時間序列」。 R有可能做這種工作嗎? 我還附上了一個示例圖。 謝謝!

回答

0

不確定這是不是你的意思,但如果你使用循環繪製每個產品,你可以簡單地使用粘貼來創建一個新的標題每個循環。例如: -

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) 

編輯現在包括環路

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

嗨timfaber,感謝您的幫助。其實我試圖完成的是爲產品A,B和C創建單獨的圖,並在所生成的圖的標題中顯示產品名稱,然後將每個圖保存到硬盤中以與利益相關者進一步溝通。 –

+0

嗨timfaber,我的問題已完美解決您的建議。這太神奇了,謝謝! –

+0

你的代碼對我來說工作得很好。給你一個簡單的問題:爲什麼你需要編寫代碼:'plotname = plotname',然後使用粘貼功能。如何理解? –