D3 v4图形模拟继续跳舞

时间:2016-09-09 14:20:25

标签: d3.js force-layout d3v4

我的图表包含大量节点(300个节点)之间的大量链接。

由于我将D3从v3升级到v4并调整为新的API和概念,因此图表将继续以跳舞模式运行。

这是一个简短的截屏视频,显示了效果:

https://www.youtube.com/watch?v=DCkBMzs1wWI

我试图去除下面的力量:

  • 碰撞力
  • 中心力量
  • 改变力量

..但是,他似乎不是这个问题的罪魁祸首。舞蹈似乎只与链接力有关。

这就是我的模拟定义方式:

// force definitions

this.forceCharge =  d3.forceManyBody();
this.forceCenter = d3.forceCenter(1800,1200);
this.forceCollide = d3.forceCollide().radius(10);
this.forceLink =  d3.forceLink().id(function(d) {return d.id;});  

// simulation definition

this.simulation = d3.forceSimulation()
    .force("charge", this.forceCharge)
    .force("link", this.forceLink)
    .force("center", this.forceCenter)
    .force("collide", this.forceCollide)
    .nodes(this.nodes)
    .nodes(this.links)
    .on("tick", this.tick)
    .on("end", this.end);

可以说链接强度和距离属性在没有任何帮助的情况下被修改为各种设置。我尝试过从0.1到1的力量,但这也没有帮助。

我也注意到了: 模拟

  • 结束事件未被触发,这意味着模拟保持不变 持续很长时间
  • 我可以调用 simulation.stop()事件。它确实停止了舞蹈,但我必须重新启动它,数据更改,舞蹈将重新开始

更新:

  • 删除碰撞检测功能似乎可以平息舞蹈,但结果图显示大多数节点重叠,因为它们具有相似的连接,创建了一个几何形状,迫使它们到达同一个地方

enter image description here

0 个答案:

没有答案