前端图表可视化库对比 - 关系图

2,937 阅读3分钟

主要用来记录对比目前流行的可视化类库渲染关系图时的优缺点,包括 D3,ECharts,G6等。

D3(svg)

文档:d3js.org/

优点:

  • 可定制程度高
  • svg 在数据量小时内存占用比 canvas 低

缺点:

  • svg 在数据量大时渲染会卡顿
  • 需要自己做性能优化

ECharts(canvas/svg)

文档:echarts.apache.org/handbook/zh…

优点:

  • 可以根据数据量自主选择 canvas 或 svg 渲染
  • 对大数据渲染有优化
  • 支持 webGL(特别)

缺点:

  • 只能绘制库预设的图表类型

G6(canvas)

文档:antv-g6.gitee.io/zh/docs/man…

优点:

  • 内置 9 种一般图的布局和 4 种树图的布局算法
  • 对大数据渲染有优化

缺点:

  • 无预设图形

布局算法

@antv/layout

随机:Random 布局是 G6 中的默认布局方法。当实例化图时没有指定布局方法,且数据中也不存在位置信息时,G6 将自动使用 Random 布局。

image.png

GForce:GForce 实现了经典的力导向算法,G6 4.0 支持。能够更加自由地支持设置节点质量、群组中心力等。更重要的是,它支持 GPU 并行计算。

image.png

Force 力导向:Force 布局经典的力导向布局方法,与 d3 的力导向布局方法相对应。其属性也与 d3.js 的力导布局参数相对应。

image.png

Force Atlas 2:Force Atlas 2 是一种力导向布局的变形,比 force 收敛地更好,更紧凑。

image.png

Combo 力导向 ComboForce:ComboForce 是基于力导向的专用于带有 combo 的图的布局算法。通过自研改造经典力导向算法,将根据节点的 combo 信息,施加不同的力以达到同 combo 节点尽可能聚集,不同 combo 之间尽可能无重叠的布局。

image.png

Fruchterman:Fruchterman 布局是一种力导布局。算法原文: Graph Drawing by Force-directed Placement

image.png

环形 Circula:Circular 布局将所有节点布局在一个圆环上,可以选择节点在圆环上的排列顺序。可以通过参数的配置扩展出环的分组布局、螺旋形布局等。原文链接: A framework and algorithms for circular drawings of graphs

image.png

辐射形 Radial:Radial 布局是将图布局成辐射状的布局方法。以一个 focusNode 为中心,其余节点按照与 focusNode 的度数关系排列在不同距离的环上。距离 focusNode 一度的节点布局在与其最近的第一个环上,距离 focusNode 二度的节点布局在第二个环上,以此类推。算法原文链接: More Flexible Radial Layout

image.png

同心圆 Concentric:Concentric 布局为同心圆布局,用户可以指定节点某个属性为排序依据(默认为节点度数 degree),该属性值越高,则该节点布局后的位置中心。

image.png

高维数据降维 MDS:MDS 布局是高维数据降维算法布局,该算法全称  Multidimensional Scaling 。

image.png

格子 Grid:Grid 布局是将所有节点通过某种指定属性排序后,整齐地放置在网格上。

image.png

小结

-D3EChartsG6
渲染方式svgsvg、canvascanvas
可定制程度较高较高
布局算法
大数据渲染优化

参考文献