闪亮的输入图选择

时间:2016-02-13 13:37:43

标签: r plot shiny forecasting

我有这个代码,我希望有一个选择输入选项,可以从两种不同的绘图方式中进行选择。

我希望如果你选择“水平”选项,那么“适合2”会被绘制而不仅仅是适合。

这是fit2。

plot(forecast(fit2,



    #Confidence Interval %

              level = c(70,90)),
 sub= "Confidence Interval 70% ~ 90%
     or Determined by user",
 ylab= "Y Axis Variable",

 main= "Forecast Linear Structural Model @ Level-Wise",

     ylim = c(0,400))

这是闪亮的代码。

library(forecast)
library(shiny)
timese <- ts(WWWusage, start= c(2008,1), end= c(2016,1), frequency=12)
fit <- StructTS(timese,"trend")
fit2 <- StructTS(timese,"level")




   ui <- fluidPage(
  (titlePanel("app | Forecast Models", windowTitle = "app")),


  #Select input
  selectInput(inputId = "select", label = "Select Forecast",
              choices = c("Trend","Level"),

                     plotOutput(outputId = "hist")),

 #Range Input

  sliderInput(inputId = "range",
              label = "Set Confidence Interval. Up to 99%",
              min = 0,max = 99, value = c(60,90)),

  mainPanel(plotOutput(outputId = "plot"))

)



server <- function(input, output) {

  output$plot <- renderPlot({

    plot(forecast(fit, #Confidence Interval %
                  level = c(input$range)),
         sub= "Confidence Interval 70% ~ 90% or Determined by user", 
         ylab= "Y Axis Variable",
         main= "Forecast Linear Structural Model @ Trend-Wise",
         ylim = c(0,400))
  })

}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:1)

server <- function(input, output) {

    output$plot <- renderPlot({
        if(input$select=="Trend")
            plot(forecast(fit, #Confidence Interval %
                          level = c(input$range)),
                 sub= "Confidence Interval 70% ~ 90% or Determined by user", 
                 ylab= "Y Axis Variable",
                 main= "Forecast Linear Structural Model @ Trend-Wise",
                 ylim = c(0,400))
        else
            plot(forecast(fit2,
                          #Confidence Interval %
                          level = c(70,90)),
                 sub= "Confidence Interval 70% ~ 90% or Determined by user",
                 ylab= "Y Axis Variable",
                 main= "Forecast Linear Structural Model @ Level-Wise",
                 ylim = c(0,400))
    })

}

基本上你根据input$select在渲染图内绘制的内容来决定。

稍微优雅的版本。

server <- function(input, output) {

    output$plot <- renderPlot({
        if(input$select=="Trend")
            method <- fit
        else 
            method <- fit2
        plot(forecast(method, #Confidence Interval %
                      level = c(input$range)),
             sub= "Confidence Interval 70% ~ 90% or Determined by user", 
             ylab= "Y Axis Variable",
             main= "Forecast Linear Structural Model @ Trend-Wise",
             ylim = c(0,400))

    })

}

然而,这使得两个情节“更相似”。正如你在标题中看到的那样。因此,您需要在if中定义其他变量。这归结为权衡