2016-05-29 8 views
0

現在、d3ヒストグラムからデータを取得するbarchartを作成しています。d3ヒストグラムとbarchartデータ

は、私はこのようなヒストグラムを作成します。

var binningThresholds = d3.range(getMinValue(rows, 'Model year'), getMaxValue(rows, 'Model year') + 2) 

var histogram = d3.layout.histogram() 
    .value(getModelYear) 
    .bins(binningThresholds) 
    (rows); 

私はCSV入力から行を取得します。私は入力が既にたくさんあるので、うまくいきます。

ヒストグラムは、オブジェクトの配列の配列です。

私は今、このhistogramを使用して、アレイ内のすべてのインデックスのチャートにバーを追加したい場合は、エラーが現れず、d3はDOMに任意のgrectまたはtextタグを付加しません。

var histogramBars = histogramSvg.selectAll('g') 
    .data(histogram) 
    .enter() 
    .append('g'); 

histogramBars.append('rect'); 

histogramBars.append('text') 
    .text(function(d) { 
     return d.length; 
    }) 

私は本当になぜ、誰かが間違いを見ますか?

答えて

2

.selectAll('g').data...を使用しないでください。あなたの視覚化には他のg要素があり、あなたが意味するものではないものを選択していると思います。代わりに次のようなことをしてください:

var histogramBars = histogramSvg.selectAll('.myUniqueClass') 
    .data(histogram) 
    .enter() 
    .append('g') 
    .attr('class', 'myUniqueClass'); 
+0

ありがとう、それはまさにそれでした。 – luuksen

+0

@マーク。 '.attr( 'class'、 'myUniqueClass')'を削除しても同じ動作をします。 –

+1

@GerardoFurtado、それは最初の 'enter'選択のためになります。しかし、彼が更新や退出のケースを処理する必要がある場合は、それが必要になります。 – Mark