1
d3を使用してラベル付きの単純な棒グラフを描画しています。既存のグラフよりも多くのアイテムを含む新しいデータでチャートを更新できます。私はenter/update/exitを使う必要があることを知っていますが、選択に問題があり、アップデートが正しく機能しています。私はバーとラベルをグループ化しています。更新しようとすると、グループを更新する代わりに、別のバーをグループに追加し続けます。可変長の新しいデータでd3棒グラフのラベルを更新する
私は、この機能を更新しています:私は物事のカップルに変更
function updateChart(){
x.domain([0, d3.max(data, function(d) { return d.count; })]);
chart = d3.select('.chart');
bar = chart.selectAll('g')
.data(data);
// Enter…
bar.enter().append('g')
.attr('transform', function(d, i) { return 'translate(0,' + (i * (barHeight+barMargin)) + ')'; });
bar.append('rect')
.attr("x", labelW)
.attr("height", barHeight)
.attr('width', 0)
.transition()
.duration(500)
.attr('width', function(d) { return x(d.count); });
// Update…
bar.transition()
.duration(500)
.attr('width', function(d) { return x(d.count); });
// Exit…
bar.exit()
.remove();
}
ああ、私はキウイを気付かなかった...与えます私に何分か –
完了、新しいフィドル(編集された答え)をチェックしてください。しかし、これはちょうどあなたのコードがいくつかの問題を抱えている方法を示しています。たとえば、「更新」を何回かクリックすると、新しいテキスト要素が追加されていることがわかります。 –
最初のg要素には、テキストと同じ問題があるため、2組のバーがあります。実際には、何回か更新をクリックすると、いくつかのバーが表示されます。私はちょうどこの問題を取り除く新しいフィドル(もう一度!)を作った、確認してください。 –