根据用户输入在 Shiny 中创建时间序列图
Create time-series graph in Shiny from user inputs
这里是初学者,非常感谢您在以下方面的任何帮助。
我希望创建一个简单的数据应用程序,它允许我:
- 输入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)) }) })
我假设您要一次输入多个值,因此每个点的数字输入框会有点麻烦。我冒昧地制作了它,以便您可以复制并粘贴逗号分隔的数据:
(注意: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)
})
})
这里是初学者,非常感谢您在以下方面的任何帮助。
我希望创建一个简单的数据应用程序,它允许我:
- 输入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)) }) })
我假设您要一次输入多个值,因此每个点的数字输入框会有点麻烦。我冒昧地制作了它,以便您可以复制并粘贴逗号分隔的数据:
(注意: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)
})
})