闪亮的renderPlotly有两个条件

时间:2017-09-11 20:03:36

标签: r shiny ggplotly

我正在开发Shiny中的应用程序。我想使用提交按钮渲染绘图。如果用户检查inputcheckbox,我还想打印标签。我可以通过按钮渲染绘图。但是选中复选框后它不起作用。

以下是代码:

 library(shiny)
 library(plotly)

 ui <-  fluidPage(
 actionButton('RUN', 'Run'),
 checkboxInput('PrintLab', 'Label', FALSE),
 plotlyOutput("plot1")
 )

 server = function(input, output) {
 output$plot1 <- renderPlotly({
 req(input$RUN)
 isolate({
   ggplotly(ggplot(data = mtcars, aes(wt, hp)) + 
           geom_point(size=1, colour = "grey"))
   })

  req(input$PrintLab)
  isolate({
   ggplotly(ggplot(data = mtcars, aes(wt, hp)) + 
           geom_point(size=1, colour = "grey") +
           geom_text(aes(label=wt), size=3, colour = "black"))
   })

 })
}

 runApp(shinyApp(ui, server))

1 个答案:

答案 0 :(得分:0)

我没有闪亮的专家,但req(input$PrintLab)并不适合我。 这会实现你的目标吗?

server <- function(input, output) {
  output$plot1 <- renderPlotly({
    req(input$RUN)

    if (!input$PrintLab) {
      ggplotly(ggplot(data = mtcars, aes(wt, hp)) + 
             geom_point(size=1, colour = "grey"))
    } else {
      ggplotly(ggplot(data = mtcars, aes(wt, hp)) + 
             geom_point(size=1, colour = "grey") +
             geom_text(aes(label=wt), size=3, colour = "black"))
    }

  })
}

(我确定那里有更好的方法。这只是我的头脑。)