python力导向图_D3 完全不需要通过力导向图来处理拓扑数据

https://bl.ocks.org/mbostock/...

哎,其实完全可以不用力导向图布局来处理拓扑图的,力导向图来处理也并不合适。

之前只是使用力导向图来初始化得到可以绘制的链路数据,节点数据是原始数据,通过力导向图布局也并没有做处理。

但是这组数据,完全可以自己处理,使用力导向图体现了“力”的相互作用,所以初始化也会有冷却时间,引入了tick事件,这个事件包含了拓扑所有元素的坐标更新,这个事件就是在冷却时间间隔不断去触发绘制。当一个节点进行拖拽的时候,也会触发这个事件。但是这个事件会更新所有元素,这样并不好。

而实际上,拓扑节点拖拽不必要调用tick事件引发所有元素坐标位置更新,基本上就拖拽节点和相关链路的坐标位置有更新。

初始化数据

var nodes = [{

"id": 1,

"ip": "1.1.1.1",

"r": 20,

"x": 200,

"y": 300

}, {

"id": 2,

"ip": "1.1.1.2",

"r": 30,

"x": 300,

"y": 300

}, {

"id": 3,

"ip": "1.1.1.3",

"r": 15,

"x": 450,

"y": 200

}, {

"id": 4,

"ip": "1.1.1.4",

"r": 20,

"x": 450,

"y": 400

}];

var links = [{

"source": 1,

"target": 2

}, {

"source": 2,

"target": 3

}, {

"source": 2,

"target": 4

}];

// 数据转换

links.some(function(v, i) {

nodes.some(function(w, j) {

if (v.source == w.id) {

v.source = w;

}

if (v.target == w.id) {

v.target = w;

}

});

v.index = ++i;

});

处理(可以通过力导向图或者自己处理就行)得到数据主要是链路可绘制坐标

bVGgGR?w=384&h=635

一开始以为,力导向图链路得到的链路数据,会随着节点数据位置变化而更新。一开始以为这个功能是力导向图原因实现的关系。后来发现,这完全是引用数据类型的原因。

恩,不用力导向图了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值