Shiny 允许用户选择显示哪些绘图输出 [英] Shiny allow users to choose which plot outputs to display

查看:48
本文介绍了Shiny 允许用户选择显示哪些绘图输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a shiny app and my server function looks like this:

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"))

)

我无法在屏幕上显示选定的图.当我从下拉菜单中进行选择并单击更新视图"按钮时,应用程序不会显示绘图.它不显示错误消息.它什么都不显示.

I can't make the selected plot display on the screen. When I make a selection from the drop-down menu and click the "Update View" button the app does not display the plot. It does not display an error message. It displays nothing at all.

我该如何解决这个问题?

How can I fix this?

推荐答案

如评论中所述,鉴于您问题中的示例不完整,很难确保任何答案都有效.然而,基于提供的骨架服务器,这种选择图形的模式应该可以工作:

As mentioned in the comments, it's difficult to ensure that any answer will work, given the incomplete example in your question. Based on the skeleton server provided, however, this pattern for selecting a graph should work:

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
  • plot1 and plot2 are reactive functions (and not outputs) that can be returned from the graphInput reactive function
  • graphInput returns the value (i.e. plot) of either plot1 or plot2 into output$selected_graph

这篇关于Shiny 允许用户选择显示哪些绘图输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆