闪亮:根据条件分析显示可变数量的图

时间:2017-02-08 17:49:23

标签: variables dynamic plot shiny output

我试图创建一个Shiny应用程序,允许用户选择一些输入参数,根据输入执行分析,然后以可变数量的图形的形式输出分析结果

这个想法是用户使用操作按钮设置分析运行,然后如果发现任何有趣的东西(取决于分析的某些条件和输入参数),则生成x个图,然后显示在屏幕。 x通常介于0(没有发现任何有趣内容)和20(发现20个有趣结果)之间。

我已经在这里看了一眼:Shiny: Dynamic Number of Output Elements/Plots,在这里:Shiny example app with dynamic number of plots,在这里:Dynamic number of reactive plots with shiny在其他地方,但我对Shiny和所以我真的很努力让一切顺利。我在绘制可变数量的图像/图形方面取得了一些有限的成功,但我在实时绘制图像方面没有成功。正如我的分析正在运行。

分析代码是我过去编写的R脚本,我试图将其改编为Shiny。它相当长并且使用了几个功能。我设法让脚本在Shiny中运行,但我唯一能做的就是将结果打印到屏幕上。

这是我的(伪)代码(大多数分析内容被删除,因为它并不真正相关):

ui.R

shinyUI(fluidPage(
  titlePanel(title=div(img(src="logo.png"))),

  sidebarLayout(
    sidebarPanel(

      h3("Select analysis parameters"),

      # Select date range for analysis
      dateRangeInput("dates", 
                     "Date range",
                     start = "2016-10-01", 
                     end = as.character(Sys.Date())),

      # Specify some variable related to the analysis
      sliderInput("var1", label = h3("Variable 1"),
                  min = 1, max = 20, value = 10),

      # Begin analysis
      actionButton("do","Run Scan")
    ),

    mainPanel(
    # I want my analysis results images to be displayed here. The results are generated using plot() and the number of plots is variable.
    )
  )
))

server.R

# Define server logic
shinyServer(function(input, output, session) {

  observeEvent(input$do, {

    # Start analysis that looks at 10 test cases
    for (i in 1:10) {

    # Perform analysis that fills the 'pattern' dataframe with a variable number of rows... 
    # <code snipped for brevity>

      # Then plot the results of the analysis if anything interesting has been found and save to disk...
      if(nrow(patterns) > 0){

        for(i in 1:nrow(patterns)){
          # Results from each test case save as a different image
          mypath <- file.path("C:/MyFolder/ShinyImage",paste(patterns$name[i],"_", i, ".png", sep = ""))
          png(file=mypath)

          # plot the results *THESE ARE THE IMAGES THAT I WANT TO PRINT TO SCREEN*
          plot(whatever_has_been_found)

          dev.off()
        }
      }
    }
  })
})

理想情况下,结果图将在分析运行时实时弹出,但另一种方法是分析完成然后显示所有图。

非常感谢有关此问题的任何帮助!提前谢谢。

0 个答案:

没有答案