您需要更新组,然后更新条形图:
const u = chart.selectAll('.layer')
.data(stackedSeries);
u.exit().remove()
const bars = u.enter()
.append('g')
.classed('layer', true)
.style('fill', (d,i)=>{
return colors[i]
})
.merge(u)
.selectAll('rect')
.data((d) => d);
bars.exit().remove()
x.domain(graphData.map((d) => d.date))
y.domain([0, d3.max(stackedSeries, (d) => d3.max(d, (d) => d[1]))]);
bars.enter()
.append('rect')
.attr('x', (d) => x(d.data.date))
.attr('width', x.bandwidth())
.attr('y', (d) => y(d[1]))
.attr('height', (d) => y(d[0]) - y(d[1]))
bars.merge(bars)
.attr('x', (d) => x(d.data.date))
.attr('width', x.bandwidth())
.attr('y', (d) => y(d[1]))
.attr('height', (d) => y(d[0]) - y(d[1]))