2016-06-17 7 views
0

私は比較的新しいD3です。このようなコードを防ぐ最良の方法については疑問に思っています。多くの場合、私はD3.jsで人々のループを見ることはほとんどありません。しかし、私はまだ彼らがなぜそうでなければならないのかはまだ理解していません。このコードがあると、ループする必要がありますか?それともループを防ぐ方法がありますか?次のコードスニペットを持っている:D3を使用してループを防止する最善の方法

var tickPath = svg.selectAll('.tickPath') 
    .data(tickValues) 
    .enter().append('path') 
    .attr('class', 'tickPath') 
    .attr('d', function(d) { 
     var tickArray = []; 
     for (var i = 0; i < numBars; i++) tickArray.push({c : d}); 
     return area(tickArray); 
    }) 
    .style('fill', (d) => color(d)) 
    .style('stroke', (d, i) => (i === 0) ? 'black' : '#5e5e5e') 
    .style('stroke-width', (d, i) => (i === 0) ? '1px' : '.5px'); 

答えて

2

人々は通常、ゼロから1を構築するのではなく、axis componentを使用しているため、あなたはあなたのようなコードが表示されません。

もう1つのことは、ループをカプセル化するselectionsです。 d3の文書から:

一般に、forループまたは再帰関数を使用してD3で文書を変更する必要はありません。これは、個々の要素をループするのではなく、選択肢全体を一度に操作するためです。しかし、必要に応じて要素を手動でループすることもできます。

しかし、SVGパスは単一の要素なので、d3の選択はあなたのケースでのループの回避/隠蔽に役立ちません。

+0

これはradarchart向けですので、直線がうまくいかないでしょうか?わからない – guyforlowbro

+0

コードへのリンクを見ている:http://bl.ocks.org/Saintat1/ec8b09eb1ee78ca638b6135cd3c942db – guyforlowbro

+0

右!軸コンポーネントは、線グラフまたは棒グラフに適しています。あなたの場合はうまくいかないでしょう。 –

関連する問題