【问题标题】:Batch Generation of Plots with ggplot2/ggseas for different products使用 ggplot2/ggseas 为不同产品批量生成图
【发布时间】:2017-03-09 07:05:01
【问题描述】:

我有一个用于时间序列分析的 tibble 数据框。我使用 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,ggtitle 应该是“产品 B 的时间序列”。 R有可能做这种工作吗? 我还附上了一个示例图。 谢谢!

【问题讨论】:

    标签: r plot time-series


    【解决方案1】:

    不确定这是否是您的意思,但如果您使用循环绘制每个产品,您可以简单地使用粘贴在每个循环中创建一个新标题。例如:

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

    【讨论】:

    • 您好 timfaber,感谢您的帮助。实际上我想要完成的是为产品 A、B 和 C 创建单独的图,并在生成的图的标题中显示产品名称,然后将每个图保存到硬盘中,以便与利益相关者进一步沟通。
    • 您好 timfaber,您的建议完美解决了我的问题。太棒了,谢谢!
    • 您的代码对我来说效果很好。给你一个简单的问题:为什么你需要编写代码:plotname=plotname,然后使用粘贴功能。怎么理解?
    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多