我使用的是D3的pack(root)方法。该方法将在某个时刻调用不起作用的packEnclose方法。有人能解释一下这种方法是如何工作的吗?
该函数似乎大部分时间都在工作,但当我给它一些不同的数据时,它有时会不工作。
下面是我如何调用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);我已经尝试得够多了,我确信一个有效的例子和一个失败的例子之间唯一的区别就是值本身。如果你想测试,我可以把数据数组发给你,因为我不能把它们附加到问题上。
发布于 2017-06-23 01:55:31
我从来没有想过这个问题,但我找到了一种奇怪的方法来解决这个问题。在调查了工作的数据和不工作的数据之间的差异后,我发现其中存在差异。不起作用的数据在写入另一个文件后看起来像是满是整数,而起作用的数据看起来像一堆浮点数。即使我在代码中显式地放入了parseFloat,所以两者都应该是浮点型的。
无论如何,我只是给每个单独的数据点增加了0.01 (不是0.000000001,因为某些原因这是不起作用的)。由于某些原因,这是有效的,还没有造成任何问题。
https://stackoverflow.com/questions/44637156
复制相似问题