- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Shiny 和 visNetwork R 包创建了一个交互式网络可视化。我想让用户通过在 UI 中使用复选框来删除/添加节点和边。我设法让它部分工作,但不知何故,当过滤多个项目时,我的解决方案不起作用。
可以查看我试图实现的行为示例 here .
请在下面找到我的代码。
library(visNetwork)
library(shiny)
library(dplyr)
nodes <- data.frame("id" = 1:6)
edges <- data.frame("id" = 1:4, "to" = c(1,2,4,5), "from" = c(2,3,5,6))
ui <- fluidPage(title = "example",
fillPage(
sidebarLayout(
sidebarPanel(
checkboxGroupInput(inputId = "filterNodes",
label = "Select nodes:",
choices = nodes$id,
selected = nodes$id),
width = 3),
mainPanel(
visNetworkOutput("network_proxy_update",width = "100%", height = "90vh"),
width = 9)
)
)
)
server <- function(input, output) {
output$network_proxy_update <- renderVisNetwork({
visNetwork(nodes, edges) %>% visNodes (color = "blue")
})
observe ({
filteredNodes <- data.frame("id" = nodes[nodes$id %in% input$filterNodes, "id"])
hiddenNodes <- anti_join(nodes, filteredNodes)
visNetworkProxy("network_proxy_update") %>%
visRemoveNodes(id = hiddenNodes) %>%
visUpdateNodes(nodes = filteredNodes)
})
}
shinyApp(ui = ui, server = server)
如有任何帮助,我们将不胜感激。最好的祝福,蒂姆
最佳答案
visRemoveNodes
需要一个 id 向量,而 visUpdateNodes
需要一个 data.frame
节点:
library(visNetwork)
library(shiny)
library(dplyr)
nodes <- data.frame("id" = 1:6)
edges <- data.frame(
"id" = 1:4,
"to" = c(1, 2, 4, 5),
"from" = c(2, 3, 5, 6)
)
ui <- fluidPage(title = "example",
fillPage(sidebarLayout(
sidebarPanel(
checkboxGroupInput(
inputId = "filterNodes",
label = "Select nodes:",
choices = nodes$id,
selected = nodes$id
),
width = 3
),
mainPanel(
visNetworkOutput("network_proxy_update", width = "100%", height = "90vh"),
width = 9
)
)))
server <- function(input, output) {
output$network_proxy_update <- renderVisNetwork({
visNetwork(nodes, edges) %>% visNodes (color = "blue")
})
myVisNetworkProxy <- visNetworkProxy("network_proxy_update")
observe ({
filteredNodes <- nodes[nodes$id %in% input$filterNodes, , drop = FALSE]
hiddenNodes <- anti_join(nodes, filteredNodes)
visRemoveNodes(myVisNetworkProxy, id = hiddenNodes$id)
visUpdateNodes(myVisNetworkProxy, nodes = filteredNodes)
})
}
shinyApp(ui = ui, server = server)
关于r - 如何使用复选框以交互方式从 visNetwork 中过滤节点/边? (使用 R Shiny ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69753943/
关于将igraph与visNetwork结合,我有一个非常简单的问题。我想用visEdges(value = E(graph)$ weight)加权边缘,但这不起作用。 这是一个说明问题的玩具示例:
这个问题已经有答案了: newline in [duplicate] (9 个回答) 已关闭 6 年前。 在 R 中,如何在 visNetwork 中拥有多行标题? \n似乎没有解决方案: requ
这个问题已经有答案了: newline in [duplicate] (9 个回答) 已关闭 6 年前。 在 R 中,如何在 visNetwork 中拥有多行标题? \n似乎没有解决方案: requ
引用我之前的一篇文章,其中包含完整的可重现代码:VisNetwork from IGraph - Can't Implement Cluster Colors to Vertices 我的目标是更改
我已经使用 Shiny 中的 visNetwork 包构建了我的网络。我想单击一个节点,然后从数据框中显示有关该节点的信息。我已经能够使用单击和近点函数对散点图执行此操作,例如此处显示的 Shiny
我正在尝试使用 visNetwork 包可视化我的网络。但我发现自己对控制节点大小和边宽完全感到困惑。在第一个示例中,我在节点中设置了 value=1,在边缘中设置了 value=0.1。在第二个示例
我想使用 visNetwork 包绘制网络。我希望我的节点在所有不同的网络中对相同的组使用相同的颜色。所以我要 A组->蓝色 B组->黄色 C 组 -> 红色。 这是前 3 个默认颜色。这是第一个简单
我有使用“igraph”库制作的网络图: library(tidyverse) library(igraph) set.seed(123) n=15 data = data.frame(tibble(
我想并排放置两个 visNetwork 图以进行视觉比较。使用带有 par() 或 layout() 的 igraph 可以进行多图定位。有没有办法为 visNetwork 做到这一点?解决方法/问题
我找到了一种将 igraph 转换为 visNetwork 的方法(请参阅 Interactive arules with arulesViz and visNetwork )。假设从 igraph
我一直有这个问题。我只能在一张图中获得一个或另一个但不能同时获得两个选项。下面是代码,我从@lukeA 那里得到了很多帮助,让我走到了这一步。 我有下图,我可以在其中将簇颜色输入 visNetwork
我正在尝试在 visNetwork 节点中嵌入一个操作按钮,以便可以通过单击工具提示中的按钮来启动操作。 我可以让按钮出现在节点标签中,但单击它时不会触发任何事件。我哪里出错了? 最小示例: libr
这是一个更普遍的问题:VisNetwork from IGraph - Can't Implement Cluster Colors to Vertices 我有一个 igraph,已转换为 visN
我开始使用名为 visNetwork 的软件包,我觉得它在未来的用户界面使用方面有很大的潜力。 尽管如此,我还是遇到了一些麻烦。我创建了一个 igraph,并应用了聚类算法,特别是 fastgreed
我正在查看美国参议员的 Twitter 网络。我希望能够选择一个参议员(使用 nodeIdSelection)并仅突出显示连接到该选定 Node 的 Node 并仅突出显示这些连接的边缘(这是我无法弄
我使用了此 question 中给出的示例但我想调整它以显示已选择节点的数据(不是所有节点,但只有这个节点)并且也不使用操作按钮,以便在我单击节点时立即显示数据。 我尝试了很多解决方案都没有成功。 当
我正在尝试使用 visNetwork 制作一个 Shiny 的交互式网络/思维导图应用程序。 visNetwork 允许交互式创建和操作网络图,如何将这些结果保存在 R data.frame 中? 我
我想将节点的位置固定在 (1,0)、(0,1)、(-1,0)、(0,-1) 和 (0,0) 处。然而,它不起作用,我的Java知识为零(看来here是关于Java代码的问题)。 有人可以帮忙吗?这是一
我正在探索 visNetwork,无法弄清楚为什么这个不显示边缘 library(visNetwork) nodes=data.frame(node=c('m1','m2','n1','n2')) a
给定的 visNetwork 脚本创建如下快照中的 visNetwork 图。我的问题是,如果您看到第一个和第二个节点,则两者之间的边缘是弯曲的。有没有一种方法可以在不改变边缘长度的情况下使边缘笔直。
我是一名优秀的程序员,十分优秀!