使用ShinyR和数据表,我们可以创建交互式图。当用户在数据表中选择一行时,它在图表中显示具有特定颜色和形状的行。当我们取消选择行时,点增益正常条件。 从(Shiny apps)修改的示例。
此外,我们可以在图表上识别特定点(我们感兴趣)(使用nearPoints
)
我希望用户能够通过单击图表上的特定点来取消选择该行。一旦用户点击图表上的点,它将获得正常的外观。
然而,我找不到使它工作的功能。
新DT库中有proxy
和selectRows
函数( DT -package)(但对于Mac,它不可用)。 Example
另一种选择是在javascript
中编写和选择callback
代码,但我的知识在该领域是有限的。
感谢任何意见和建议。
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="")
})
})
答案 0 :(得分:3)
使用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])
})