Próbuję utworzyć BarChart realtime, że działki wartości w czasie, przy użyciu d3.jsDołączanie elementu do istniejącego elementu w d3.js
To jak ja to robię.
var dataset = [ 5, 10, 15, 20, 25 ];
var w = 1800;
var h = 500;
var barPadding = 1;
setInterval(function(){
dataset.push(Math.floor(Math.random()*51));
draw();
},1000);
function draw(){
d3.select("svg").remove();
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg.selectAll("rect").data(dataset)
.enter()
.append("rect")
.attr("x", function(d, i){return 12*i;})
.attr("y", function(d){return h -d*4; })
.attr("width", 11)
.attr("height", function(d) { return d * 4; })
.attr("fill", "teal")
.attr("fill", function(d) { return "rgb(0, 0, " + (d * 10) + ")";});
}
Problem polega na tym, że przerysowuję cały wykres za każdym razem, gdy do tablicy danych zostanie dodana nowa wartość.
Jak dodać pasek do wykresu słupkowego, który jest już narysowany, za każdym razem, gdy nowa wartość jest dodawana do tablicy, zamiast przerysowywania jej za każdym razem?
Przeczytaj i przeczytaj ponownie: http://bost.ocks.org/mike/join/ i https://github.com/mbostock/d3/wiki/Selections#wiki-data – Wex