2017-06-19 4 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をコードに入れていますが、両方とも浮動小数点にする必要があります。

とにかく、1つのデータポイントごとに0.01を追加しました。何らかの理由で機能しないため、0.000000001ではありません。何らかの理由でこれは動作しており、問題はまだ発生していません。

関連する問題