일반적으로 표시되는 데이터를 전환하려면 redraw()
함수를 만들어 차트의 데이터를 업데이트하십시오. 다시 그리기에서는 데이터 요소가 수정 될 때 수행해야 할 작업, 새 데이터 요소가 추가 될 때 수행되어야 할 작업 및 데이터 요소가 제거 될 때 수행해야 할 작업의 세 가지 경우를 처리해야합니다.
일반적으로 다음과 같습니다 (이 예는 패닝을 통해 데이터 세트를 변경하지만 실제로는 문제가되지 않습니다). 전체 코드는 http://bl.ocks.org/1962173입니다.
function redraw() {
var rects, labels
, minExtent = d3.time.day(brush.extent()[0])
, maxExtent = d3.time.day(brush.extent()[1])
, visItems = items.filter(function (d) { return d.start < maxExtent && d.end > minExtent});
...
// upate the item rects
rects = itemRects.selectAll('rect')
.data(visItems, function (d) { return d.id; }) // update the data
.attr('x', function(d) { return x1(d.start); })
.attr('width', function(d) { return x1(d.end) - x1(d.start); });
rects.enter().append('rect') // draw the new elements
.attr('x', function(d) { return x1(d.start); })
.attr('y', function(d) { return y1(d.lane) + .1 * y1(1) + 0.5; })
.attr('width', function(d) { return x1(d.end) - x1(d.start); })
.attr('height', function(d) { return .8 * y1(1); })
.attr('class', function(d) { return 'mainItem ' + d.class; });
rects.exit().remove(); // remove the old elements
}
이것은 훌륭합니다! 시간 내 주셔서 대단히 감사합니다. –