В моем jsfiddle, если вы нажмете кнопку Pending
в легенде, она должна удалить бары, связанные с этой категорией. Это работает, но когда я нажимаю кнопку Reset Legend
(которая предоставляет метод currateData
с исходными данными, чтобы возвращались строки Pending
), он загружает старые ожидающие данные.Почему удаление, а затем повторное добавление баров к моей диаграмме столбцов меняет положение баров?
Я считаю, что это что-то делать с этим методом:
function redrawPlot() {
svg = d3.select('svg.chart')
.attr('width', width)
.attr('height', height);
svg.selectAll('g.xaxis')
.attr('transform', 'translate(0, ' + (height - margin.top - margin.bottom) + ')');
}
Я не могу удалить этот метод, потому что мой код является более сложным, то, что показ в jsfiddle, это просто показывает проблему. Мне также нужно обновить ширину и высоту в методе перерисовывания, поэтому я не могу просто удалить его.
Как изменить метод redrawPlot(), чтобы при повторной настройке диаграммы он не испортил позиции бара при добавлении старых данных?
Спасибо, что нашли время, чтобы ответить. К сожалению, мне нужно переопределить переменную svg, потому что я имею дело с изменением нескольких экземпляров сюжета. Есть ли в любом случае я могу переопределить переменную, изменить высоту/ширину и все равно получить все мои бары в правильном положении? – Grammin
Итак, используя то, что вы сказали, я установил svg = d3.select ('g') и все работает ... Спасибо за ваш вклад! – Grammin
http://jsfiddle.net/k98mm/5/ – Grammin