1

我想在 Shiny 的 visNetwork 网络中取消选择边缘。visSetSelection应该工作,但它没有:如果我手动选择一个边缘,然后按下按钮,边缘保持选中状态。我不知道还有其他方法可以做到这一点。这https://github.com/almende/vis/issues/1670建议使用 visSelectEdges 并将 id 设置为 NULL 但这也没有效果。有任何想法吗?

require(shiny)
require(visNetwork)

server <- function(input, output) {
  output$network <- renderVisNetwork({
    # minimal example
    nodes <- data.frame(id = 1:3)
    edges <- data.frame(from = c(1,2), to = c(1,3))

    visNetwork(nodes, edges)
  })

  observeEvent("deselect",{
  visNetworkProxy("network") %>%
    visSetSelection(edgesId = NULL,unselectAll = T) 


})
}

ui <- fluidPage(
  visNetworkOutput("network"),
  actionButton("deselect","Deselect")
)

shinyApp(ui = ui, server = server)
4

1 回答 1

1

你可以使用visUnselectAll(见这里)。此外,您需要在 的条件下替换"deselect"为。input$deselectobserveEvent

require(shiny)
require(visNetwork)

server <- function(input, output) {
  output$network <- renderVisNetwork({
    # minimal example
    nodes <- data.frame(id = 1:3)
    edges <- data.frame(from = c(1,2), to = c(1,3))

    visNetwork(nodes, edges)
  })

  observeEvent(input$deselect, {
    visNetworkProxy("network") %>%
      visUnselectAll()

  })
}

ui <- fluidPage(
  visNetworkOutput("network"),
  actionButton("deselect","Deselect")
)

shinyApp(ui = ui, server = server)
于 2020-03-16T20:54:39.157 回答