代码之家  ›  专栏  ›  技术社区  ›  ttmt

D3-堆叠条形图更新,轴更新但不更新条形图

  •  0
  • ttmt  · 技术社区  · 6 年前

    我这里有个闪电战- https://stackblitz.com/edit/d3-bar-stacked-update?embed=1&file=index.js&hideNavigation=1

    我正在尝试创建一个使用D3更新模式更新的堆叠条形图。

    我有轴更新,但酒吧不更新

    我确实尝试在这里包含代码,但我总是出错

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ryan Morton    6 年前

    您需要更新组,然后更新条形图:

    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]))