【问题标题】:Shiny r: clear selected rows from data table by click on plotShiny r:通过单击绘图清除数据表中的选定行
【发布时间】:2015-12-08 16:26:23
【问题描述】:

使用 ShinyR 和数据表,我们可以创建交互式绘图。当用户在数据表中选择一行时,它会在图表中以特定的颜色和形状显示。当我们取消选择行时,点增益正常。 从 (Shiny apps) 修改的示例。

此外,我们可以识别图表上的特定点(我们感兴趣)(使用nearPoints

我希望用户能够通过单击图表上的特定点来取消选择行。一旦用户单击图表上的点,它将获得正常外观。

但是,我找不到使它工作的函数。 在新的 DT 库(DT-包)中有一个 proxyselectRows 函数(但对于 Mac,它不可用)。 Example

另一种选择是在callback 中编写和选择javascript 代码,但是我在这方面的知识有限。

将感谢任何 cmets 和建议。

用户界面

library(shiny)
library(DT)

fluidPage(
  title = 'Select Table Rows',
  fluidRow(
    column(6, DT::dataTableOutput('x1')),
    column(6, plotOutput('x2', height = 500,click = "plot_click"),
           verbatimTextOutput("info"))
  )
)

服务器

shinyServer(function(input, output, session) {  
  output$x1 = DT::renderDataTable(cars, server = FALSE)
  # highlight selected rows in the scatterplot
  output$x2 = renderPlot({
    s = input$x1_rows_selected
    par(mar = c(4, 4, 1, .1))
    plot(cars)
    if (length(s)) points(cars[s, , drop = FALSE], pch = 19, cex = 2)
  }) 
  output$info <- renderPrint({
    paste("Selected point row.name - ", row.names(nearPoints(cars, input$plot_click, xvar = "speed", yvar = "dist")), sep="")
  }) 
})

【问题讨论】:

    标签: javascript r datatable ggplot2 shiny


    【解决方案1】:

    使用新版本的DT 可以完美搭配proxy

    proxy = dataTableProxy('x1')
    observeEvent(input$plot_click, {
      removeRow <- as.numeric(row.names(nearPoints(cars, input$plot_click, xvar = "speed", yvar = "dist")))
      selectRows(proxy, input$x1_rows_selected[!input$x1_rows_selected %in% removeRow])
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2014-10-27
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多