在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)
})
}
))
提前致谢
答案 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
不是A
,dygraphOutput("dygraph")
将呈现pType
没有任何内容不是B
。