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

D3-堆积条形图,位置条形图

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

    https://stackblitz.com/edit/d3-stacked-trend-bar-v5eyxx?file=src/app/bar-chart.ts

    我正在使用D3创建一个角度的堆积条形图。

    X轴是月份,每个月有两个堆叠的条形图。

    我不知道如何使用D3的函数在X轴上的位置,所以我通过将条的数量除以宽度来定位它们。

    .attr('width', (this.width/this.data.length)-2)
    
    .attr('x', (d:any, i:any)=>{
        return (i * this.width/this.data.length);
    })
    

    这类工作,但月份刻度应该在每月的每个栏之间,但这是关闭的。

    如何使用D3的内置函数正确定位条

    2 回复  |  直到 6 年前
        1
  •  1
  •   rioV8    6 年前

    你必须把每个月的带宽分成两条

    .attr('width', this.x.bandwidth()*0.95*0.5 )
    .attr('x', (d:any, i:any)=>{
        return (this.x(d.data.date) + (i%2) * 0.525 * this.x.bandwidth());
    })
    
        2
  •  0
  •   Shashank    6 年前

    当你使用 d3.scaleBand() 对于x刻度,可以使用 band_bandwidth 设置条形图的宽度。

    1. 条形图的带宽:

      .attr('width', this.x.bandwidth())
      
    2. x 基于日期定位条。

      .attr('x', (d:any, i:any)=>{
          return this.x(d.data.date);
      })
      

    考虑到上述变化:

    https://stackblitz.com/edit/d3-stacked-trend-bar-dqezuw?file=src/app/bar-chart.ts

    希望这有帮助。