2017-06-19 138 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,因爲某些原因不起作用)加到每個數據點上。出於某種原因,這是工作,並沒有造成任何問題。