如何根据用户输入在R Shiny中渲染不同的绘图输出类型?

时间:2017-12-11 09:47:41

标签: r shiny shinyjs

在R Shiny中,我想根据勾选的单选按钮渲染不同的绘图输出类型。这很容易实现,如:create plots based on radio button selection R Shiny中所示。现在进一步采用这种方法,如何用不同的输出类型实现它,如dygraphs和amCharts?试图实现我想要实现的目标:

library(shiny)
library(dygraphs)
library(amCharts)

myData <- runif(100)
myData <- ts(runif(72,0,10), start=c(2009, 1), end=c(2014, 12), frequency=12) 
myData 

outType <- function(x,type){
  switch(type,
         A = renderPlot({ hist(x)}),
         B = renderDygraph({ barplot(x)}),
         C = amChartsOutput({ pie(x)}))
}

plotOut <- function(type,plotlabel,data){
  switch(type,
         A = plotOutput(plotlabel,data),
         B = dygraph(plotlabel,data),
         C = plotOutput(plotlabel,data))
}

runApp(list(
  ui = bootstrapPage(
    radioButtons("pType", "Choose plot type:",
                 list("A", "B", "C")),
    plotOut('A','plot',myData)
  ),

  server = function(input, output) {
    observe({
      type <<- input$pType
      output$plot <- outType(myData, input$pType)  
    })
  }
))

提前致谢

1 个答案:

答案 0 :(得分:2)

这样的事情。在server

output$plot <- renderPlot({
  validate(need(input$pType=="A", message=FALSE))
  hist(myData)
})
output$dygraph <- renderDygraph({
  validate(need(input$pType=="B", message=FALSE))
  barplot(myData)
})

ui

conditionalPanel('input.pType=="A"', plotOutput("plot"))
conditionalPanel('input.pType=="B"', dygraphOutput("dygraph"))

可能不需要条件面板,因为plotOutput("plot")将不会呈现pType不是AdygraphOutput("dygraph")将呈现pType没有任何内容不是B