autoplot () возвращает объект ggplot. Но для вашего вывода $ forecast_plots требуется объект plotly (с функцией plotlyOutput ()).
Рабочий код выглядит следующим образом:
ui <- dashboardPage(
dashboardHeader(title = "Plot"),
dashboardSidebar(disable = TRUE),
dashboardBody(fluidRow(column(width = 12, box(plotOutput("forecast_plots"),width = NULL))))
)
server <- function(input, output) {
output$forecast_plots <- renderPlot({
autoplot(fit_BC)
})
}
Объекты ggplot могут быть легко конвертированы с помощью функции ggplotly, но, к сожалению, преобразованный график с автоплотированием на графике теряет область прогнозирования. Вы можете проверить это как:
ui <- dashboardPage(
dashboardHeader(title = "Plot"),
dashboardSidebar(disable = TRUE),
dashboardBody(fluidRow(column(width = 12, box(plotlyOutput("forecast_plots"),width = NULL))))
)
server <- function(input, output) {
output$forecast_plots <- renderPlotly({
ggplotly(autoplot(fit_BC))
})
}
Добавить
Я нашел библиотеку автоплоттинга. https://terrytangyuan.github.io/2018/02/12/autoplotly-intro/
Функция autoplotly () может преобразовать объект autoplot в объект заговора, что примерно правильно.
library(shiny)
library(shinydashboard)
library(plotly)
library(forecast)
library(autoplotly)
df <- read.csv("c:/Users/010170283/Downloads/data.csv")
demand <- ts(df$demand, start = c(1995, 1), frequency = 12)
lbd <- BoxCox.lambda(demand, lower=-5, upper=5)
m <- ar(BoxCox(demand,lambda=lbd))
fit_BC <- forecast(m, h=12, lambda=lbd)
ui <- dashboardPage(
dashboardHeader(title = "Plot"),
dashboardSidebar(disable = TRUE),
dashboardBody(fluidRow(column(width = 12, box(plotlyOutput("forecast_plots"),width = NULL))))
)
server <- function(input, output) {
output$forecast_plots <- renderPlotly({
autoplotly(autoplot(fit_BC))
})
}
shinyApp(ui, server)
С его помощью можно увидеть область прогноза, и значения hi / lo 80% -ой границы представлены событием наведения мыши.