核心概念
力导向图
力导向图是优雅的的展示图类型数据的一种方式,它的应用场景多样化,如:知识图谱可视化,网络关系可视化,组织架构可视化,流程关系可视化等。
d3.js 的力导向图 中包含三个基本要素:节点(nodes) 、边(links)、力(force),节点表示某个事物或对象,边表示它们之间的关系,力则是施加在节点的上的作用力。
其中核心的力导布局算法 ,通过仿真物理力学模型(simulation) ,在初始化节点后施加作用力,计算出每个节点的移动趋势和坐标。经过多次迭代计算,最终使得整个力学系统趋近平衡,形成稳定的布局。
在 d3-force 中预置了几种常见的力,拖动下图节点来查看力的方向:
通过组合各种力和调整力学参数,逐渐将力导向图调整至最优的布局状态。
插件机制
图谱可视化提供了插件机制,能够帮助用户灵活拓展图谱功能,目前所有插件如下列表:
插件名称 | 插件名 | 是否需要手动引入 |
---|---|---|
贝塞尔曲线控制点 | bezierCurveController | 否 |
快捷选择器 | selector | 否 |
高亮 | highlight | 否 |
工具函数 | globalGraphHelper | 否 |
遮挡检测 | occlusionDetection | 否 |
动态加载 | dynamicLoadData | 否 |
颜色板 | colorPalette | 否 |
框选工具 | RectSelection | 是 |
缩略图 | minimap | 是 |
使用框选工具:
import { plugin } from '@snfe/force-graph-vis';
const graph = new ForceGraphVis(/*options*/);
const rectSelection = new plugin.RectSelection(/*options*/);
graph.use(rectSelection);
用户还可以通过自定义插件的方式去拓展图谱功能,参见如何开发一个插件
事件交互
图谱可视化的内部触发的行为,通过事件监听和分发机制,与外界应用程序进行交互,例如:
- 监听节点左键双击事件
import { Events } from '@snfe/force-graph-vis';
const graph = new ForceGraphVis(/*options*/);
graph.eventEmitter.on(Events.node.dblclick, ({ item, index, array, event }) => {});
图谱所有事件参见事件
渲染模式
建设中..