D3 弦布图
2022-04-21
弦图(Chord Diagram
),是一种表示一组元素之间关系
的学术图表之一。主要可以分为外部节点和内部弦。通过弦图布局(Chord Layout
)可以将方块矩阵转换成一个可用于绘制节点和弦的数据。
ID | DA | FA |
---|---|---|
d3.layout.chord() | 创建弦布图 | |
chord.matrix() | 设置或获取矩阵(必须为方块矩阵,行列数相等) | |
chord.padding() | 设置或获取元素节点之间的间距,默认为0 |
|
chord.sortGroups() | 对节点进行排序 | |
chord.sortSubgroups() | 对各点所在行的数据进行排序 | |
chord.sortChords() | 对弦进行排序 | |
chord.chords() | 返回弦数组 | |
chord.groups() | 返回节点数组 |
布局运算
使用弦布图(Chord Layout
)可以直接通过 d3 来计算出弧
的startAngle and endAngle
等,并通过使用chords() and groups()
来直接输出弦图的弦数组以及节点数组
,需要注意的是弦图使用的数据添加方法采用了方块矩阵
1 | var padding = { |
弦布图
在下述 code 中分别添加了三个<g>
元素,分别包括了位置、节点、弦
,分别代表了gOuter(g)、gInner(g)、path(outerPath)、text(outerText)、innerPath(path)
,在 web 展示的结构是:
1 | <svg> |
1 | /* 基本 svg 规格 */ |
less
1 | @colorWhite: #ffffff; |
为了体现出外弦
和节点
的区分,我们需要为outerPath(外弦路径)、outerText(外弦文字/节点文字)、innerPath(内弦路径)
添加样式。
css
1 | .outerPath{ |
behavior
为了增加观感上的体验,我们为弦布图增加了behavior
,主要通过使用使用mouseover(鼠标光标) and mouseout(光标移出)
,然后通过d.source.index !=i && d.target.index !=i
排除光标选择外的数据,在通过添加过渡来实现效果。
1 | /* |_ 鼠标事件 |