Javascript 为什么在堆栈条形图中删除然后重新添加条形图会改变条形图的位置?

Javascript 为什么在堆栈条形图中删除然后重新添加条形图会改变条形图的位置?,javascript,d3.js,bar-chart,Javascript,D3.js,Bar Chart,在my中,如果单击图例中的Pending按钮,则应删除与该类别关联的条形图。这是可行的,但当我单击重置图例按钮(该按钮为currateData方法提供原始数据,以便挂起条返回)时,它会将旧的挂起数据加载到不合适的位置 我认为这与这种方法有关: function redrawPlot() { svg = d3.select('svg.chart') .attr('width', width) .attr('height', height); svg

在my中,如果单击图例中的
Pending
按钮,则应删除与该类别关联的条形图。这是可行的,但当我单击
重置图例
按钮(该按钮为
currateData
方法提供原始数据,以便
挂起
条返回)时,它会将旧的挂起数据加载到不合适的位置

我认为这与这种方法有关:

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) + ')');
}
我不能删除这个方法,因为我的代码比JSFIDLE中显示的更复杂,这只是说明问题。我还需要在重画方法中更新宽度和高度,所以我不能仅仅删除它


如何更改redrawPlot()方法,以便在重新填充图表时,在添加旧数据时不会弄乱条形图的位置?

问题出在
redrawPlot
函数中:

var;
函数initPlot(){

svg=d3。选择(“#graphTest”)/问题出在
重画图
函数中:

var;
函数initPlot(){

svg=d3。选择(“#graphTest”)//谢谢你花时间回复。不幸的是,我需要在那里重新定义svg变量,因为我正在处理更改多个绘图实例的问题。我是否可以重新定义变量,更改高度/宽度,并且仍然将所有条带都放在正确的位置?因此,使用你所说的设置svg=d3。选择('g'))一切正常…感谢您的输入!感谢您花时间回复。不幸的是,我需要重新定义svg变量,因为我正在处理更改多个绘图实例的问题。我是否可以重新定义变量,更改高度/宽度,并且仍然将所有条带放在正确的位置?因此,使用id我设置svg=d3。选择('g')一切正常…谢谢您的输入!