vis.js图表​​即使在数小时后也没有稳定

Sur*_*raj 5 javascript json chap-links-library vis.js vis.js-network

我有一个大约1000个节点的网络.我已stabilize:truezoomExtentOnStabilize: true.正在JSON使用vis.network.gephiParser.parseGephi()函数添加节点.当我试图绘制这张图时,即使在让它闲置数小时后它也永远不会稳定下来.但是,较少数量的节点在合理的时间内稳定下来.我在这里想念的是什么 有没有办法稳定大图.我甚至尝试将迭代次数设置为稳定到1000甚至更高.在此先感谢您的帮助.

PS:JSON没有节点的坐标.根据用户输入重新绘制图形.

编辑1:绘制的JSON数据可在http://pastebin.com/raw.php?i=Mzy4ncxw获得.由于CORS错误,我无法在jsbin上创建可重现的示例.
JavaScript代码是:

message = JSON.parse(json_data); // json_data is sent from R server.
var nodes = new vis.DataSet();
var edges = new vis.DataSet();
var container = document.getElementById("div_graph");
var data = {
  nodes: nodes,
  edges: edges
};
var options = {
  tooltip: {
    delay: 50,
    fontColor: "black",
    fontSize: 14, 
    fontFace: "verdana",
    color: {
      border: "#666",
      background: "#FFFFC6"
      } 
  },
  clustering: {
    enabled: clusteringOn,
    clusterEdgeThreshold: 50  
  },
  hideEdgesOnDrag: true,
  stabilize: true,
  zoomExtentOnStabilize: true,
  navigation: true,
  keyboard: true,
  edges: {
    inheritColor: "to"
  }
};
var network = new vis.Network(container, data, options);
nodes.clear();
edges.clear();
var parsed = vis.network.gephiParser.parseGephi(message);
nodes.add(parsed.nodes);
edges.add(parsed.edges);
network.redraw();
Run Code Online (Sandbox Code Playgroud)

Ale*_*xdm 10

我是visjs网络模块的开发人员.我们用它来稳定比1000个节点更大的集合.根据您提供的信息,我无法真正说出这里出了什么问题.我想邀请您在我们的github页面上提出问题.我们试图收集那里的所有问题.您可以共享您使用的代码或您的数据(标签为了匿名性而扰乱).

如果我猜测,1000节点系统将稳定大约3000次迭代.如果使用动态平滑曲线,则在添加支撑节点以定位曲线时,这会大大增加.我已经为3000个节点和25000个边缘系统使用了15000次迭代,即使这样它也没有完成但是我在那个时候停止了模拟.

当您说重新绘制用户输入时,是否在您看到拖动或缩放的意义上重新加载或重绘数据(类似于重绘功能)?

〜亚历克斯

编辑:

根据您的数据,我遇到了一些问题.

首先,您似乎不允许节点移动但也不提供其位置,从而导致四叉树构建过程中的无限递归.我将在未来使gephiParser更加健壮.请参阅此处了解gephi解析器的设置:http://visjs.org/docs/network.html#Gephi_import

其次,您使用动态平滑曲线和许多互连节点.每条平滑曲线都有一个不可见的支撑节点,有助于定位.这会使您的系统不稳定(看看它的稳定性以查看行为).在v4版本中,您可以设置自己的时间步以纠正此问题,但也可以更改物理设置.尝试configurePhysics选项,看看是否有帮助.您仍然可以使用静态平滑曲线来达到美学目的.

总结一下,我可以让你的系统在大约3000次迭代中使用静态平滑曲线稳定,大约需要一分钟.我在您的选项中禁用了群集.我建议你等待4.0版本使用群集,因为它会更加强大.

编辑2:

这是一个JSBin,显示您的代码和数据的工作稳定性(虽然已修改)

http://jsbin.com/tiwijixoha/5/edit?html,output

因此,如果你认为它没有稳定,它不会隐藏自己,只显示它准备好而不是永远不会达到稳定状态,那么问题是稳定只能通过setData()完成,而不是数据集更新.

在这个jsbin中,我也改变了你的边缘并改变了物理学以使其稳定.如果你对它不满意,你可以多玩一点.