gpt4 book ai didi

javascript - "Leaf-justify"D3 TreeMap ?

转载 作者:行者123 更新时间:2023-11-29 19:11:51 24 4
gpt4 key购买 nike

我需要做什么来渲染 TreeMap ,使节点向图的叶侧对齐?

我想采用通常看起来像的任意 TreeMap :

before

并让它类似于:

after

最佳答案

一种方法是发现树的深度并设置 depth每个没有该值的子节点的节点的属性。

假设你的树数据如下:

var data = [
{
"name": "Top Level",
"parent": "null",
"children": [
{
"name": "Level 2: A",
"parent": "Top Level",
"children": [ ...

并且您使用以下方法创建了一棵树:

var tree = d3.layout.tree();

您可以获得depth通过在每个节点中搜索 depth 的最大值来搜索树:

var treeDepth = d3.max(tree(data[0]), function(d) { return d.depth; });

一旦你有了它,你就可以在每次重新计算树布局时重置它:

tree.nodes(data[0]).forEach(function(d) {
var depthSize = 50;
if (!d.children) { // this node has no children
d.depth = treeDepth; // set depth to depth of tree
}
d.y = d.depth * depthSize; // recalculate y
});

这适用于按照您的示例(从左到右)布置的树木。对于自上而下的布局,您必须更改 d.x相反。

这是一个 JSFiddle 的工作解决方案改编自 this example

关于javascript - "Leaf-justify"D3 TreeMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38314582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com