博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D3.js 力导向图来处理拓扑图
阅读量:5889 次
发布时间:2019-06-19

本文共 1017 字,大约阅读时间需要 3 分钟。

记录一点碰到的问题和解决方案。感觉国内关于D3.js 4.0版本的相关资料还是少。

力导向图布局

D3一种布局的方式,可以将你nodes links的节点数据转换成可以绘制的坐标点数据,然后通过svg展现出来,画拓扑图中用到。

通过fixed属性来固定节点

上面作者的demo(d3.js v4)。

力导向图的几个特征

  • 节点之间的相互作用力的存在 所以节点不能重合,然后节点拖拽的过程中会影响到其他的节点

  • 拖拽的过程 节点之间的线段长度不变,会会弹回去

但是对于拓扑图来说,这两点会有问题,并不需要这样的体验,简单来说,节点固定后,拖拽不影响其他节点的位置,节点拖拽链路长度要变动。

找了个作者的demo

这是D3.js v3版本的实现方法
主要方法就是将节点数据

d.fixed = true;

一开始没有仔细看v4版本的API 想当然以为也是这样去做的,尝试了好久没成功。

v4版本的api对fixed节点的规定是 如果节点数据(d) 有fx fy两个值不为null,那么就是固定节点,unfix固定节点的方法就是 设置fx fy=null。

To fix a node in a given position, you may specify two additional properties:

fx - the node’s fixed x-position
fy - the node’s fixed y-position
At the end of each tick, after the application of any forces, a node with a defined node.fx has node.x reset to this value and node.vx set to zero; likewise, a node with a defined node.fy has node.y reset to this value and node.vy set to zero. To unfix a node that was previously fixed, set node.fx and node.fy to null, or delete these properties.

v4版本

其他

D3.js 3.x和4.x版本api改动真心大,也没有很多相关资料,还是要多看api吧

转载地址:http://pegix.baihongyu.com/

你可能感兴趣的文章
BZOJ-2763: [JLOI2011]飞行路线 (SPFA分层图)
查看>>
make、make clean、make install、make uninstall、make dist、make distcheck和make distclean
查看>>
华为内部面试题库---(5)
查看>>
JDK动态代理实现
查看>>
反射方法关闭窗体报错的解决方法
查看>>
NSInvocation 调用block clang代码转换c++
查看>>
计算字符串中每种字符出现的次数
查看>>
Python3学习笔记(十五):常用时间模块time和datetime
查看>>
SQL Server2005中使用XML-OPENXML
查看>>
Bingo·Leap Motion设备原理解密了
查看>>
ASP.NET多文件上传实例
查看>>
leetcode之Happy Number
查看>>
【转】Java泛型-类型擦除
查看>>
时间日期
查看>>
PredictionIO+Universal Recommender快速开发部署推荐引擎的问题总结(2)
查看>>
【232】◀▶ IDL显示地理图像
查看>>
【116】Windows 系统组合键
查看>>
学习进度表 04
查看>>
python---__getattr__\__setattr_重载'.'操作
查看>>
海量并发的无锁编程 (lock free programming)
查看>>