根据用户输入在Shiny中创建时间序列图

时间:2015-01-20 15:34:25

标签: r time-series shiny rstudio

初学者非常感谢以下任何帮助。

我希望创建一个简单的数据应用程序,它允许我:

  • 输入3个值(数字在1-11之间)
  • 输出时间序列图。

如果无法做到这一点,创建logit函数的方向是合理的吗?

我知道3个值很少,但我可以根据需要添加。

这就是我所拥有的

ui.R

shinyUI(pageWithSidebar(   headerPanel("Time Series"),   sidebarPanel(
textInput(inputId="text1", label = "Input Text1"),
textInput(inputId="text2", label = "Input Text2"),
textInput(inputId="text2", label = "Input Text2"),
numericInput('Data', 'Time series',
             min = 0, max = 11)   ),   mainPanel(
plotOutput('plot1')   ) ))

server.R

    require(graphics) 
shinyServer(function(input, output, session) {
  # Combine the selected variables into a new data frame   
  selectedData <-         reactive({   ts <- reactive({
    ts(selectedData(), input$ts)   })
    output$plot1 <- renderText({as.numeric(input$text1), as.numeric(input$text2, as.numeric(input$text3})
      par(mar = c(6.1, 4.1, 0, 1))
      plot(selectedData(),
           col = ts()$ts,
           pch = 20, cex = 3))   })    })

1 个答案:

答案 0 :(得分:2)

我假设你想要一次输入多个值,所以每个点的数字输入框会有点麻烦。我冒昧地制作它,这样你就可以复制并粘贴逗号分隔的数据:

(注意:value仅指定默认值,只要您点击它们将清除的框。)

<强> ui.R

shinyUI(
  pageWithSidebar(   
    headerPanel("Time Series"),   sidebarPanel(
    textInput("text", label = h6("Input comma delimited data"), value = "1.3, 2.9, 0.5, 2.1, 4.3")
    ),
    mainPanel(
      plotOutput('tsplot')   
    ) 
  )
)

<强> server.R

require(graphics) 

shinyServer(function(input, output, session) {
 output$tsplot <- renderPlot({
   x <- as.numeric(strsplit(input$text, split = ",")[[1]])
   ts.obj <- ts(x)
   lowess.obj <- lowess(ts.obj, f = 10)
   plot.ts(x, main = "Sample Time Series", xlab = "Time")
   points(x)
   lines(lowess.obj$y, col = "red")
   legend("top", legend = "Loess Smoother", col = "red", lty = 1)
 })
})

enter image description here