Kailang Blog

React 和 D3 实现簇布局2019-03-29Θ

cluster layout

相关知识#

工作原理#

使用的是 D3 cluster layout 中的 API,对简单的数据进行格式化,补充父级、子级、坐标位置(Automatic Graph Drawing 算法)等可用数据。同时,提供快捷函数拿到需要数据进行渲染绘图。渲染后的数据结构如下:

使用函数#

  • d3.layout.cluster() 设置默认簇布局
  • d3.layout.hierarchy() 默认设置创建新的分层布局
  • root.descendants() 所有节点的数组
  • root.links() 表达父子关系的数组

实现简单的簇布局#

依赖 d3-hierarchy

绘制曲线#

cluster layout with path

绘制曲线链接需要将 line 改为更加灵活的 path 进行绘图。改动细节:

横向排列并补充文案#

cluster layout with path and row

  1. 线条:要将 formatPath 函数的 x、y 对换
  2. 节点:transform 翻转,同时去掉 circle 的 cx、cy 属性

实现收缩#

参考#