D3-堆叠条形图,位置条

时间:2018-08-13 12:58:00

标签: angular d3.js

我这里有一个Stackbiltz-https://stackblitz.com/edit/d3-stacked-trend-bar-v5eyxx?file=src/app/bar-chart.ts

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

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 个答案:

答案 0 :(得分:1)

您必须每月将带宽分成2个条形

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

答案 1 :(得分:0)

当您使用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

希望这会有所帮助。