首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >闪亮r:单击“绘图”从数据表中清除选定的行

闪亮r:单击“绘图”从数据表中清除选定的行
EN

Stack Overflow用户
提问于 2015-12-08 16:26:23
回答 1查看 2K关注 0票数 2

使用ShinyR和数据表,我们可以创建一个交互式的绘图。当用户在数据表中选择一行时,它会在图形中显示特定的颜色和形状。当我们取消选择行时,点获得正常条件.从(闪亮的应用程序)修改的示例。

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

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

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

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

感谢您的意见和建议。

用户界面

代码语言:javascript
运行
复制
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"))
  )
)

服务器

代码语言:javascript
运行
复制
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="")
  }) 
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-08 18:37:42

使用新版本的DT,它与proxy完美地工作在一起。

代码语言:javascript
运行
复制
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])
})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34160990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档