R ggplot2 预测日期格式化

4

在预测自动图表(ggplot)中,让x轴显示日期格式为"%m/%d/%y"而不是十进制格式可能会遇到困难。我找到了一个解决方案,在ggplot上添加了+ scale_x_date(labels = format("%m/%d/%y")),但这给我已有的x轴带来了错误以及无效输入。这似乎应该很简单,只需将十进制格式转换为日期格式即可,因为从头构建整个 x 轴似乎更加费力。

下面是我的代码:

  library(forecast)
  library(lubridate)
  library(ggplot2)
  library(ggfortify)
  library(scales)


  ActualDemand <- c(250, 800 , 500, 4000)
  STRING_DATE <- c("05/13/2017","05/06/2017", "5/20/2017", "05/27/2017")

  dataset <- data.frame(ActualDemand, STRING_DATE)

  #convert from string to date
  dataset$STRING_DATE = lubridate::mdy(dataset$STRING_DATE)
  dataRowCount <- nrow(dataset)

  #find start date
  startDate <- NULL

  for (i in 1:dataRowCount) {
    if (i == 1) {
      startDate <- dataset[i, 2]
      next
    }

    compareDate <- dataset[i,2]

    if (compareDate < startDate) {
      startDate <- compareDate
    } else {
      next
    }
  }

  #transformed set
  datasetSorted <- dataset[order(dataset$STRING_DATE),]

  #build time series, run outlier detection
  ts <- ts(datasetSorted$ActualDemand, frequency = 52, start = c(year(startDate), week(startDate)))
  print(week(startDate))
  cleaned_ts <- tsclean(ts)

  #forecast algorithm
  tbat_model <- tbats(cleaned_ts)
  tbat_forecast <- forecast(tbat_model, h=26)

  autoplot(tbat_forecast)

这里是一张图表,它解释了日期但将其显示为小数点形式: enter image description here FYI,这只是一些快速的样本数据,实际数据来自于PowerBI动态数据框架。
1个回答

2
希望您已经提前解决了这个问题。如果没有(对于其他人也是如此),我一直在尝试解决同样的问题已经几个小时了,所以这是我的解决方案:
只需修改您代码的最后几行为:
my_date_transform <- function(x) {format(date_decimal(x), "%m/%d/%y")}
autoplot(tbat_forecast)+
  scale_x_continuous(labels = my_date_transform)

给出以下结果:final_graph


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接