Angular D3-堆叠条形图,位置条形图

Angular D3-堆叠条形图,位置条形图,angular,d3.js,Angular,D3.js,我这里有一个斯塔克比尔茨- 我正在使用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创建角度的堆叠条形图

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的内置函数正确定位条形图

当您使用
D3.scaleBand()
对于x比例时,可以使用设置条形图的宽度

相关变更:

  • 酒吧的带宽:

    .attr('width', this.x.bandwidth())
    
  • x
    基于日期的条形定位

    .attr('x', (d:any, i:any)=>{
        return this.x(d.data.date);
    })
    
  • 考虑到上述变化的叉子:


    希望这能有所帮助。

    您必须每月将带宽分成两个小节

    .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());
    })
    

    哈哈,我的坏朋友。我没有把问题读对!我刚用了一个比例尺条形图。不管怎样,很高兴事情解决了!