Vis.js速度慢,有很多节点/边
vis.js slow with many nodes / edges
我正在构建一个页面来可视化节点和边的网络。js做我想要的,但它是非常慢与我的数据。
我使用的代码几乎是从vis.js的一个例子逐字复制的。不同之处在于,数组节点和边每个包含约4000个元素(在下面的代码中,我将它们截断为几个元素)。
这样的页面需要几分钟才能加载。有什么办法让它更快吗?
<div id="mynetwork"></div>
<script type="text/javascript">
var color = 'gray';
var len = undefined;
var nodes = [{"group": 1, "id": 1, "label": "my first node"}, {"group": 0, "id": 2944, "label": "my nth node"}];
var edges = [{"to": 2944, "from": 1}, {"to": 2945, "from": 2}, {"to": 2946, "from": 3}];
// create a network
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {
nodes: {
shape: 'dot',
size: 30,
font: {
size: 32,
color: '#ffffff'
},
borderWidth: 2
},
edges: {
width: 2
}
};
network = new vis.Network(container, data, options);
我曾经在许多图像上表现不佳
将此添加到选项中解决了问题:
nodes: {
shapeProperties: {
interpolation: false // 'true' for intensive zooming
}
}
尝试使用layout: {improvedLayout:false}
内部选项
您可以使用最适合您需求的不同算法
例如与
相同var options = {
physics:{
enabled: true,
barnesHut: {
gravitationalConstant: -2000,
centralGravity: 0.3,
springLength: 95,
springConstant: 0.04,
damping: 0.09,
avoidOverlap: 0
},
forceAtlas2Based: {
gravitationalConstant: -50,
centralGravity: 0.01,
springConstant: 0.08,
springLength: 100,
damping: 0.4,
avoidOverlap: 0
},
repulsion: {
centralGravity: 0.2,
springLength: 200,
springConstant: 0.05,
nodeDistance: 100,
damping: 0.09
},
hierarchicalRepulsion: {
centralGravity: 0.0,
springLength: 100,
springConstant: 0.01,
nodeDistance: 120,
damping: 0.09
},
maxVelocity: 50,
minVelocity: 0.1,
solver: 'barnesHut',
stabilization: {
enabled: true,
iterations: 1000,
updateInterval: 100,
onlyDynamicEdges: false,
fit: true
},
timestep: 0.5,
adaptiveTimestep: true
}
}
network.setOptions(options);
你也可以使用options:
{
physics:{
stabilizations:false
}
}
如果你想提前加载网络
,最后的解决方案是,如果以上任何一个都不起作用,你可以存储网络的x和y位置,当它稳定时,可以用稳定时的坐标进行初始化…
查看相关线程
在vis.js网络中有类似的性能问题。我使用图像节点与svg作为图像源。在IE中,大约40个节点的性能是可以接受的,但在Chrome中,它的速度非常慢。它指出了svg图像的两个问题:
-
如果svg图像有大的尺寸,如1024X1024,那么chrome渲染性能很差。
-
在IE中则相反:如果svg标签中没有设置源图像的大小,则IE很慢。
通过在svg标签中设置=36,height=36来修复它。现在它在两个浏览器中都能很好地工作。也许这对其他人也有帮助。
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”