2017-06-19 89 views
0

我正在使用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); 

我已经试过足够的代码示例,我相信工作的例子和失败的例子之间的唯一区别是值本身。如果你想测试我可以给你发送数据数组,因为我不能将它们附加到问题上。

回答

0

我从来没有想过这个,但发现了一个奇怪的方式来解决这个问题。在调查了有效数据和我没有发现的数据之间的差异之后,发现存在差异。没有工作的数据在写入另一个文件后看起来像是充满了整数,而工作的数据看起来像一堆浮游物。即使我明确地把parseFloat放在我的代码中,所以两者都应该是浮动的。

无论如何,我只是将0.01(不是0.000000001,因为某些原因不起作用)加到每个数据点上。出于某种原因,这是工作,并没有造成任何问题。