R Shiny:我可以在没有actionButton的情况下使用Shinyjs()吗?

时间:2018-12-06 16:09:41

标签: r shiny show-hide shinyjs

我希望通过使用Shinyjs()自动隐藏绘图,而不必使用actionButton。这可能吗?

这是我在ui.R中的代码:

tabPanel(title = "Plot", useShinyjs(), 
         sidebarPanel(width = 4,                                                                           
                      h2("Plotting"),                                                                           
                      radioButtons(inputId = "type",                                                                                                       
                                   label = "Type of Plot:",                                                                                                      
                                   choices = c("Scatter Plot", 
                                               "Pie Chart", "Bar Chart"),                                                                                                   
                                   selected = "Scatter Plot"),                                                                                  
                   ),

         mainPanel(width = 8,
                   br(), br(),                                                                  
                   div(id='showplot', plotlyOutput(outputId = "plot")),
                   div(id='showplot2', plotOutput(outputId = "plot2")),
                   br(),                                                     
                   h5(textOutput("description"))
                   )
                  )

这是我在服务器中的代码。R:

output$plot <- renderPlotly({
  if (input$type == "Scatter Plot") {
  show("showplot") 
} else {
  hide("showplot")
}
  ggplotly({
    p <- ggplot(data = variable_source(), aes_string(x = input$x, y = input$y)) +
    geom_point(size = input$size, col = input$color) +
    labs(x = x(),
         y = y(),
         color = toTitleCase(str_replace_all(input$z, "_", " ")),
         title = toTitleCase(input$plot_title)

  if (input$fit == TRUE) {
    p <- p + geom_smooth(method = "lm")
  }
  p
  })
})

output$plot2 <- renderPlot({
if (input$type == "Pie Chart") {
    show("showplot2") 
  } else {
    hide("showplot2")
  }
  ggplot(shortlistpied(), aes_string(x = factor(1),  y = "Percentage", fill = input$y)) + 
    geom_bar(stat = "identity", width = 1) +
    geom_text(aes(x = factor(1), y = label_pos, label = perc_text), size = 4) + 
    scale_fill_distiller(palette = "Oranges") +
    coord_polar("y") + 
    facet_wrap( ~get(input$x)) + 
    theme_void()
})

编辑:这是我最初运行应用程序时看到的内容:scatter plot original,这一切都很好。但是,当我单击饼形图时,会看到以下内容:pie chart disappears。图表应在以下位置消失:pie chart original。另外,当我再次单击散点图时,它也像这样消失:scatter plot disappears。这可以解决吗?

基本上,我要做的是使主面板在用户单击散点图时显示散点图,而在用户单击饼图时显示饼图。我尝试使用NULL,但参考本帖子R Shiny: How not to display plot when NULL,它会产生不舒服的空白,我希望能够避免这种情况。

非常感谢!

0 个答案:

没有答案