Shiny允许用户选择要显示的绘图输出

时间:2018-01-18 01:07:26

标签: r shiny output reactive

我有一个闪亮的应用程序,我的服务器功能如下所示:

shinyServer(function(input, output, session) {
 filedata <- reactive({
  infile <- input$file1
  if (is.null(infile)) {
    return(NULL)
  }
  myDF <- fread(infile$datapath)
  return(myDF)
  # Return the requested graph
graphInput <- reactive({
switch(input$graph,
       "Plot1" = plot1,
       "Plot2" = plot2)
})
 output$selected_graph <- renderPlot({ 
paste(input$graph)
  })

 output$plot1 <- renderPlot({
 #fill in code to create a plot1
})

output$plot2 <- renderPlot({
 #fill in code to create plot2
})

UI功能如下所示:

shinyUI(pageWithSidebar(
 headerPanel("CSV Viewer"),

 sidebarPanel(
  fileInput('file1', 'Choose CSV File',
          accept=c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
  selectInput("graph", "Choose a graph to view:", 
            choices = c("Plot1", "Plot2"))
  submitButton("Update View")
),#end of sidebar panel

mainPanel(
tabsetPanel(
  tabPanel("Graph Viewer", plotOutput("selected_graph"))

我无法在屏幕上显示所选的绘图。当我从下拉菜单中进行选择并单击“更新视图”按钮时,应用程序不会显示该图。它不显示错误消息。它根本没有显示任何内容。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的,鉴于问题中的不完整示例,很难确保任何答案都能奏效。但是,根据提供的骨架服务器,这种用于选择图形的模式应该有效:

shinyServer(function(input, output, session) {
  filedata <- reactive({
    # Haven't tested that this will read in data correctly;
    # assuming it does
    infile <- input$file1
    if (is.null(infile)) {
      return(NULL)
    }
    myDF <- fread(infile$datapath)
    return(myDF)
  })

  plot1 <- reactive({
   # this should be a complete plot image,
   # e.g. ggplot(data, aes(x=x, y=y)) + geom_line()
  })

  plot2 <- reactive({
   # this should be a complete plot image,
   # e.g. ggplot(data, aes(x=x, y=y)) + geom_line()
  })

  # Return the requested graph
  graphInput <- reactive({
   switch(input$graph,
          "Plot1" = plot1(),
          "Plot2" = plot2()
          )
  })

  output$selected_graph <- renderPlot({ 
   graphInput()
  })
}

发生了什么变化:

  • plot1plot2reactive函数(而不是输出),可以从graphInput被动函数返回
  • graphInputplot1plot2的值(即图表)返回到output$selected_graph
相关问题