D3包装不能正常工作
问题描述:
我正在使用D3的包装(根)方法。该方法将在某个时候调用不工作的packEnclose方法。有人可以解释该方法的工作原理吗?D3包装不能正常工作
该函数似乎大部分时间都在工作,但是当我给它一些不同的数据时,它有时不起作用。
下面是我如何打电话D3组
var stratify = d3.stratify()
.parentId(function(d) {
return d.id.substring(0, d.id.lastIndexOf("@")); });
var root = stratify(data)
.sum(function(d) { return d.value; })
.sort(function(a, b) { return (a.value - b.value) })
// .eachAfter(function(node) { node.value = node.data.value;})
var pack = d3.pack()
.size([width - margin, height - margin])
.padding(5);
pack(root);
我已经试过足够的代码示例,我相信工作的例子和失败的例子之间的唯一区别是值本身。如果你想测试我可以给你发送数据数组,因为我不能将它们附加到问题上。
答
我从来没有想过这个,但发现了一个奇怪的方式来解决这个问题。在调查了有效数据和我没有发现的数据之间的差异之后,发现存在差异。没有工作的数据在写入另一个文件后看起来像是充满了整数,而工作的数据看起来像一堆浮游物。即使我明确地把parseFloat放在我的代码中,所以两者都应该是浮动的。
无论如何,我只是将0.01(不是0.000000001,因为某些原因不起作用)加到每个数据点上。出于某种原因,这是工作,并没有造成任何问题。