这是我用d3.js制作的图表。我希望我的条形图以刻度值为中心 - 因为每组(3条形图)的中间条形应与月份名称重合。有没有办法优雅地做到这一点?如果您需要有关数据集或图表功能的更多信息,请告诉我。
一些有用的代码
this.container.selectAll('g.container')
.data(this.data)
.enter().append('g')
.attr('class', 'container')
.attr('transform', function(d, i){
console.log(d.dimension, this)
var x = self.margin.left + self.xScale(d.dimension.value);
var y = self.margin.top;
return 'translate('+ x + ',' + y +')'
});
this.bars = this.container.selectAll('g.container')
.selectAll('rect.bar')
.data(function(d){ return d; })
.enter()
.append('rect')
.attr('class', 'bar')
.attr('width', 3)
.attr('height', function(d){
console.log(d.y, d.key, this);
return availableHeight - self.yScale(d.y);
})
.attr('y', function(d){ return self.yScale(d.y); })
.attr('x', function(d, i){ return i * 5 });
答案 0 :(得分:0)
您可以通过调整附加矩形的transform
或g.container
属性的x
来实现此目的。我会调整变换,即改变
.attr('transform', function(d, i){
console.log(d.dimension, this)
return 'translate('+
(self.margin.left + self.xScale(d.dimension.value)) + ','
+ self.margin.top +')'
});
包含一些额外的空格(dimension.value
s之间的差异的一半)。