【问题标题】:generate multiple tables from multiple selections of scatterplot in shiny R从闪亮的R中的多个散点图选择生成多个表
【发布时间】:2021-06-08 10:12:48
【问题描述】:

我在闪亮的仪表板上有一个散点图,我想通过选择/突出显示散点图的不同区域来生成 两个 不同的表格。我目前能够通过选择/突出显示一个区域来生成一个表格,但是我不确定如何使这适用于两个表格/选择(或者是否可能)。

任何帮助或建议将不胜感激。谢谢你

下面提供了用于生成带有散点图的闪亮仪表板并突出显示/生成单个表格的示例代码(取自here

更多细节:理想情况下,这个过程可以通过手动选择/拖动一个区域到一些点上来实现,生成第一个表格,然后手动选择/拖动一个区域到不同的点子集上,然后生成第二个表。之后,如果选择了另一个区域,它将重置第一个选择和表格,然后下一个选择将重置第二个选择和表格。

ui <- fluidPage(

  plotOutput("plot", brush = "plot_brush"),
  tableOutput("data")
)
server <- function(input, output, session) {
  output$plot <- renderPlot({
    ggplot(mtcars, aes(wt, mpg)) + geom_point()
  }, res = 96)
  
  output$data <- renderTable({
    brushedPoints(mtcars, input$plot_brush)
  })
}
shinyApp(ui=ui, server=server)

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    也许这可能会有所帮助。您可以跟踪reactiveValues 中的哪个表(1 或2)以及每个表的数据。让我知道这是否是您的想法。如果您想在图中保留先前的选择,我认为您可能需要手动放置一个矩形。 github issue 允许选择多个拉丝点是一个未解决的问题(增强功能)。或者,您可以根据this approach 为每个表标记点。

    library(shiny)
    
    ui <- fluidPage(
      plotOutput("plot", brush = "plot_brush"),
      h2("Table 1"),
      tableOutput("data1"),
      h2("Table 2"),
      tableOutput("data2")
    )
    
    server <- function(input, output, session) {
      
      rv <- reactiveValues(table = 1,
                           data1 = NULL,
                           data2 = NULL)
      
      output$plot <- renderPlot({
        ggplot(mtcars, aes(wt, mpg)) + geom_point()
      }, res = 96)
      
      my_data <- eventReactive(input$plot_brush, {
        if (rv$table == 1) {
          rv$table <- 2
          rv$data1 <- input$plot_brush
        } else {
          rv$table <- 1
          rv$data2 <- input$plot_brush
        }
        return(rv)
      })
      
      output$data1 <- renderTable({
        brushedPoints(mtcars, my_data()$data1)
      })
      
      output$data2 <- renderTable({
        brushedPoints(mtcars, my_data()$data2)
      })
      
    }
    
    shinyApp(ui=ui, server=server)
    

    【讨论】:

    • 非常感谢!这正是我想要的。也不错的解决方案。你摇滚! :)
    猜你喜欢
    • 2016-04-03
    • 2018-10-09
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多