パスが正しく機能するために .enter() と .exit を取得できないようです。以下のコードでは、パスを再描画しようとするたびに、古いパスが保持されます。
間違っているのは .attr("d",stepline(csProg)) だと思います。.attr("d",function(d) { stepline(d); }) のようなものにするべきだと思っていましたが、うまくいきませんでした。助言がありますか?
function drawCloseChart(mysvg,mydata,cx1,cx2,cy1,cy2,oq)
{
var x = d3.scale.linear().domain([360*60, 390*60]).range([cx1, cx2]),
y = d3.scale.linear().domain([0,oq]).range([cy1,cy2]),
z = d3.scale.category10();
var targetg = mysvg.append("svg:g");
//code to draw x-axis
//code to draw y-axis
var stepline = d3.svg.line()
.x(function(d) { return x(d.time); })
.y(function(d) { return y(d.val); })
.interpolate("step-after");
var chartData = [];
chartData.redraw = function()
{
var cpg = cprog.selectAll("path").data(csProg);
cpg.enter()
.append("path")
.attr("d",stepline(csProg))
.attr("fill","none")
.attr("stroke-width","2")
.attr("stroke","black");
cpg.exit().remove();
}
chartData.redraw();
return chartData;
}
そして、後で私が呼び出すコード(またはこの効果に何か):
setInterval(function() { updateDate(); chartData.redraw(); },1000)
ただし、古いパスは削除されません。
編集:これは、私が見ている問題のある JSFiddle です。http://jsfiddle.net/namit101/k8kUZ/26/