类似于Groups of edges and select in visNetwork in R,我想知道如何创建一个基于边缘的下拉列表,而不是使用visNetwork
包的节点。我认为这是可能的visSetSelection
函数,但这需要使用shiny。我交付的最终产品是从markdown呈现的html,而不是从服务器部署,所以我不认为这是一个可能的。
有没有办法在shiny之外复制这个函数呢?我不是很理解文档中的术语,但是我想我想做的是类似于visOptions
函数中的nodeIdSelection
或selectedBy
参数,在这些函数中可以创建一个“HTML select元素”,但是基于边列表而不是节点列表。
这个特殊问题的数据集是专有的,但这里有一些虚拟数据。我希望能够选择的“重量”的边缘。
library(tidyverse)
library(visNetwork)
nodes <- tibble(id = 1:30)
edges <- tibble(from = c(21:30, 1:20),
to = c(5:20, 21:30, 1:4),
weight = c(rep(1:5, 6)))
visNetwork(nodes, edges) %>%
visIgraphLayout(layout = "layout_in_circle") %>%
visOptions(highlightNearest = list(enabled = T,
hover = T,
degree = 1,
algorithm = "hierarchical"),
nodesIdSelection = T)
我希望在visOptions
中有一个edgesIdSelection
参数,但这不是一个选项。我假设管道visSelectEdges
可以工作,但这只适用于shiny,而我的客户端无法访问shiny服务器。我知道这个库是为了使javascript库可以通过R访问而创建的,所以我不期望它具有完整的功能--如果我不能在R中使用这个包来实现这一点(没有闪亮),我完全明白了。
1条答案
按热度按时间pgpifvop1#
看起来visNetwork包没有内置的方法来创建基于网络边缘的下拉列表,但是,您可以使用自定义JavaScript代码和R中的htmlwidgets包来实现这一点。
htmlwidgets包允许您使用R创建自定义交互式HTML小部件。您可以使用此包创建自定义小部件,其中包含基于网络边缘的下拉列表。然后,您可以在visNetwork图中使用此小部件。
下面是一个如何使用htmlwidgets包创建自定义小部件的示例:
创建自定义微件后,可在visNetwork图中使用,如下所示:
然后,您可以向小部件添加自定义JavaScript代码,以创建基于网络边缘的下拉列表。此代码将特定于您的需要,因此,我建议您参考visNetwork文档以及visNetwork所基于的JavaScript库(vis.js)的文档,以获得有关如何创建下拉列表的指导。