我正在尝试为nvd3多条形图添加一些空格/填充。 “groupSpacing”不是我需要的,因为它只增加了组之间的空间。我需要在组内的每个栏之间留出空间。我在github support找到了一个链接。你可以发布任何解决方案或调整吗?
我还找到了d3 example of grouped bar chart。这个例子中的任何帮助对我都很有帮助。
感谢。
答案 0 :(得分:7)
我画了一个d3组条形图:
您可以通过更改第56行上的代码来调整groupSpacing:
var groupSpacing = 6;
从技术上讲,我只是通过改变每个rects'宽度的宽度来实现它:
var barsEnter = bars.enter().append('rect')
.attr('class', 'stm-d3-bar')
.attr('x', function(d,i,j) {
return (j * x1.rangeBand() );
})
.attr('y', function(d) { return y(d.y); })
.attr('height', function(d) { return height - y(d.y); })
.attr('width', x0.rangeBand() / barData.length - groupSpacing )
.attr('transform', function(d,i) {
return 'translate(' + x0(d.x) + ',0)';
})
.style("fill", function(d, i, j) {
return color(data[j].key);
});
希望它能帮助您了解如何在d3中实现它。
答案 1 :(得分:0)
我也从“宽度”属性中减去组间距的数量。我发现在完成此操作后,x轴标签看起来有些偏离,因此我将(组间距/ 2)添加到了“ x”属性。这是我的代码示例。
var groupSpacing = 15;
var rect = groups.selectAll("rect")
.data(function (d) { return d; })
.enter()
.append("rect")
.attr("x", function (d) { return x(d.x) + (groupSpacing / 2) ; })
.attr("y", function (d) { return y(d.y0 + d.y); })
.attr("height", function (d) { return y(d.y0) - y(d.y0 + d.y); })
.attr("width", x.rangeBand() - groupSpacing)