D3 矩阵布局
2022-04-21
矩阵布局(Treemap
)是一个层级布局或分层布局扩展,最早由Ben Shneiderman
在 1991
进行提出,可以通过对一块举行进行切分,并达到层级演示的效果。会通过使用将一块类似于近正矩形
并进行切块,之后将数据根据矩形树图算法
进行计算。
ID | DA | FA |
---|---|---|
d3.layout.treemap() | 创建矩阵数布局 | |
treemap.nodes(root) | 根据root 进行计算,并获取节点数据 |
|
treemap.links(nodes) | 根据 nodes 进行计算,获取连线数组 | |
treemap.children([children] ) |
设置或获取子节点访问器(默认情况下子节点对象是children ) |
|
treemap.sort([comparator] ) |
设置或获取布局的节点排序数据 | |
treemap.value([value] ) |
设置或获取值访问器 | |
treemap.size([size] ) |
设置或获取布局尺寸,(有两个参数分别为 表示宽 以及高 ) |
|
treemap.padding([padding] ) |
设置或获取矩阵单元之间的间隔(单位为像素) | |
treemap.round([round] ) |
设置或获取是否对计算结果是否进行四舍五路 |
|
treemap.sticky([sticky] ) |
设置或获取矩阵树图是否有粘性 ,粘性属性布局将保留整个过度中节点的相对排序 |
|
treemap.ratio([ratio] ) |
设置或获取矩阵树图是否有粘性 的 |
|
treemap.mode([mode] ) |
设置矩阵布局模式,不同算法之间的有很大的差异 |
|
![]() |
确定数据
下述我们通过计算出广州省、吉林省、河南省
的人口迁移数据,通过新建json
文件来进行写入:
1 | { |
布局运算
上述的 json
数据是无法直接被 d3.js
所识别的,所以需要通过使用布局,将得到node
以及links
的连线关系并进行转换,上图我们以河南省数据
为例,转换如下:
1 | /* |
绘制矩阵
1 | var padding = { |
CSS
1 | .nodeRect { |