mtdv logo

核心概念

阅读时间约 3 分钟

力导向图

力导向图是优雅的的展示图类型数据的一种方式,它的应用场景多样化,如:知识图谱可视化,网络关系可视化,组织架构可视化,流程关系可视化等。

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 }) => {});

图谱所有事件参见事件

渲染模式

建设中..