gpt4 book ai didi

javascript - 来自没有层次结构的数组的 d3 TreeMap

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

我正在尝试创建一个树状图布局,但只有一个数值数组。我的代码看起来像这样(示例来自 here ):

const data = [32, 16, 37, 56];

const treeMapLayout = d3.treemap().size([400, 200]).paddingOuter(10);
const root = d3.hierarchy(data);

root.sum(d => d.value);
treeMapLayout(root);

d3.select('svg g')
.selectAll('rect')
.data(root.descendants())
.enter()
.append('rect')
.attr('x', d => d.x0)
.attr('y', d => d.y0)
.attr('width', d => d.x1 - d.x0)
.attr('height', d => d.y1 - d.y0)
rect {
fill: cadetblue;
opacity: 0.3;
stroke: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg width="420" height="220">
<g></g>
</svg>

这是否可以在不使用 d3.hierarchy 的情况下完成?或者至少有一种方法可以在我不需要多个级别的情况下进行设置?

最佳答案

是的,您可以按照 Hierarchical Layouts 中的示例数据设置仅在根以下一级的层次结构。您链接到的页面部分。

这里是你需要的数据格式:

const data = {
children:[
{
value: 32
},
{
value: 16
},
{
value: 37
},
{
value: 56
},
]
}

或者你可以这样转换它:

const originalData = [32, 16, 37, 56];

const data = {
children: originalData.map(item => ({value: item}))
};

这是一个fiddle .

关于javascript - 来自没有层次结构的数组的 d3 TreeMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072521/

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