// 可以使用 ForceAtlas2.Node 创建节点
var position = new Float32Array([10, 10]);
forceAtlas2.addNode(new ForceAtlas2.Node("", position));
// 也可以传入任意带有 position 属性的 object
var position = new Float32Array([10, 10]);
forceAtlas2.addNode({
position: position,
id: "",
mass: 1,
size: 1
});
zr-graph 是一个类似 gephi 的 web 应用, 可以在线查看和简单编辑常见的图文件(目前只支持 gexf 和 gdf ),使用力导向算法进行布局,导出成 gexf 文件。
Try it
独立使用 ForceAtlas2
zr-graph 中使用了 ForceAtla2 作为布局算法,你可以在 zr-graph 界面中尝试该布局算法,也可以引用 js 文件在自己的项目中独立使用。
使用示例
参考
static/tests/force_worker.html的代码引用代码
ForceAtlas2 的源文件是
static/lib/目录下的ForctAtlas2.js和ForceAtlas2_worker.js,ForceAtlas2.js是需要引用的文件,ForceAtlas2_worker.js是布局算法主要的代码,顾名思义这段代码是通过 WebWorker 在另一个进程中执行的,但是无需关心这个,只要跟ForceAtlas2.js放在同个目录下就行了。使用代码
其中
id,mass,size属性都是可选的跟添加节点类似
初始化会创建一个 worker 并把顶点和边的初始数据传到 worker 中
每次更新会触发 worker 计算一次布局,每次计算的结果都是累积的,计算完之后会把节点新的位置同步回来并且调用
onupdate函数。