2017-05-25 143 views
0

我正在与tsoutliers一起绘制时间序列中的异常值,但我无法将绘图的x轴中的日期显示为实际日期。现在他们被显示为看起来是Julian日期的某种类型; 16816,16816.2等我已经研究过,并没有找到太多的东西,但我想知道是否有一种方法使用ggplot()ts对象,因为我知道ggplot2自动处理日期很好。将x轴格式化为阴谋中的日期

这是我的工作的代码,我只是把一些快速的样本数据为数据帧,实际数据从动态PowerBI数据帧来:

library(forecast) 
    library(tsoutliers) 
    library(lubridate) 
    library(dplyr) 
    library(ggplot2) 

    ActualDemand <- c(1000, 250, 500, 3000) 
    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 = startDate) 
    series.outliers <- tso(ts) 
    plot(series.outliers) 

这里是输出的外观像:

enter image description here

回答

1

您可以覆盖xaxis值:

plot(series.outliers, 
    args.x.axis = list(at = time(series.outliers$y), labels=datasetSorted$STRING_DATE))