gpt4 book ai didi

javascript - D3 森伯斯特弧尺寸

转载 作者:行者123 更新时间:2023-11-29 16:06:12 26 4
gpt4 key购买 nike

我正在尝试基于此示例创建 D3 旭日图:

https://bl.ocks.org/maybelinot/5552606564ef37b5de7e47ed2b7dc099

我希望创建的圆弧闭合整个圆,但它们没有。

出于测试目的和简单起见,同一深度中每个元素的大小之和等于 360。

遵循我的 jsFiddle:

https://jsfiddle.net/igasparetto/uz8rz13d/

有些东西告诉我问题出在这些线上:

var partition = d3.partition();

var arc = d3.arc()
.startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x0))); })
.endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x1))); })
.innerRadius(function(d) { return Math.max(0, y(d.y0)); })
.outerRadius(function(d) { return Math.max(0, y(d.y1)); });

谢谢

最佳答案

您的问题似乎是,当您执行 root.sum 生成值时,为父节点定义的大小变量被包括在内。本质上,父值不仅设置为其子值的总和,而且您将父值添加为“可用空间”

https://github.com/d3/d3-hierarchy/blob/master/README.md#node_sum

“每个节点的 node.value 属性设置为指定函数返回的数值加上所有后代的组合值。”

这是有效的,因为它忽略了非叶节点大小值:

  root.sum(function(d) { return !d.children || d.children.length === 0 ? d.size :0; });

https://jsfiddle.net/uz8rz13d/2/

关于javascript - D3 森伯斯特弧尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649418/

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