2016-10-22 35 views
0

タイムラインでブラシを作成するD3.jsグラフを作成しています。私は新しいデータでチャートを再描画したいときにこんにちは。ブラッシング後のD3.jsグラフの再描画

´function brushed() { 

    var startDate=new Date(brush.extent()[0]); 
    var endDate=new Date(brush.extent()[1]); 

    var newDates=[]; 

    var i=0; 

while(JSONdata.measurementPoints[i].measurementDateTime<=endDate){ 
    if(JSONdata.measurementPoints[i].measurementDateTime>=startDate){ 
    newDates.push(JSONdata.measurementPoints[i].measurementDateTime); 
    } 
    i++; 
} 
if(newDates.length>0){ 
    chart.select('path').attr('d',pathGenerator(newDates)); 
    chart.select(".x.axis").call(xAxis); 
} 
}´ 

私の問題は、要素のデータを変更するとグラフ全体が消えてしまうことです。私はD3.jsでかなり新人ですが、これがこの機能を実現する最善の方法であるかどうかは分かりません。

私は何か提案を感謝します。

コード:事前にhttp://codepen.io/laczko090/pen/ozJANP?editors=1010

ありがとう!

+0

を私はこの記事を見てきました午前中にも – Mahi

+0

それは私が解決した別の質問だった: ) – Laci

答えて

0

メイングラフの線と軸をbrushedに再描画する必要があります。 brushed

var path = series.append('path') 
    .attr('vector-effect', 'non-scaling-stroke') 

[...]

、再描画:

Modified CodePen

保存は、グラフの線のパスへの参照

path.attr('d', pathGenerator(dates)); 

xAxis.scale(xScale); 
xAxisEl.call(xAxis); 
+0

うわー、これは最高です。どうもありがとうございました! – Laci

関連する問題