我有这个代码,我希望有一个选择输入选项,可以从两种不同的绘图方式中进行选择。
我希望如果你选择“水平”选项,那么“适合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)
答案 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
中定义其他变量。这归结为权衡