如何根据用户输入在 R Shiny 中呈现不同的绘图输出类型?
How to render different plot output types in R Shiny dependent of user input?
在 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)
})
}
))
提前致谢
类似的东西。在 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
.
在 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)
})
}
))
提前致谢
类似的东西。在 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
.