r - 当边多于一个时,visIgraphLayout() 函数会在节点之间重叠边
问题描述
我有下面的代码,它使用 r 包可视化网络visNetwork
。
library(visNetwork)
id<-c("articaine","benzocaine","etho","esli")
label<-c("articaine","benzocaine","etho","esli")
node<-data.frame(id,label)
from<-c("articaine","articaine","articaine","articaine","articaine","articaine","articaine","articaine","articaine")
to<-c("benzocaine","etho","esli","benzocaine","etho","esli","benzocaine","etho","esli")
title<-c("SCN1A","SCN1A","SCN1A","SCN2A","SCN2A","SCN2A","SCN3A","SCN3A","SCN3A")
edge<-data.frame(from,to,title)
visNetwork(nodes = node,edge)%>%
visOptions(highlightNearest=T, nodesIdSelection = T) %>%
# Specify that hover interaction and on-screen button navigations are active
visInteraction(hover = T, navigationButtons = T) %>%
visIgraphLayout(randomSeed = 997)
如果删除最后一行
%>%
visIgraphLayout(randomSeed = 997)
网络可视化是正确的
但是当添加时,我失去了一些边缘。
我需要该visIgraphLayout()
功能,因为它使我的真实网络看起来更好,并且复制速度也更快。为什么会发生这种情况?可能的解决方案?
解决方案
一种折衷方案是将平滑属性分配给具有多条边的从到组合,但不分配给其他组合。就我而言,这显着提高了绘图速度。顺便说一句,我正在使用 data.table 和 visNetwork。
##assign smooth property where multiple edges
edge_list[, N := .N, by = c("from", "to")]
edge_list[N > 1, smooth := T]
edge_list[N == 1, smooth := F]
##plot
visNetwork(nodes = node_list,
edges = edge_list[, .(from, to, smooth)]) %>%
visNodes(physics = F) %>%
visIgraphLayout(randomSeed = 951)
对不起,不可复制的例子,但希望有用。
推荐阅读
- c++ - 与位掩码(或操作)和段有关的问题
- html - How can I get this layout in bootstrap?
- javascript - 获取 html 日期输入类型值和下拉列表中的值以显示在其他 div 中,而无需使用 javascript 加载页面
- android - 如何更改导航架构组件中的向上按钮颜色
- android - Android Studio 模拟器中的 SO_REUSEPORT 错误
- python - 在尝试在 python 中的数据库之间建立连接时。我收到了”评论表未找到
- scala - Scala 期货列表中的错误处理 - Apache Spark
- javascript - 如何在javascript中获取表单元素
- amazon-web-services - 如何在 Terraform 中查看 AWS API Gateway 部署的超链接作为输出?
- javascript - 如何存储到数组