如何在nvd3分组多栏图表中的分组条形图中的条形之间添加空格?

时间:2014-12-16 07:11:38

标签: d3.js nvd3.js

我正在尝试为nvd3多条形图添加一些空格/填充。 “groupSpacing”不是我需要的,因为它只增加了组之间的空间。我需要在组内的每个栏之间留出空间。我在github support找到了一个链接。你可以发布任何解决方案或调整吗?

我还找到了d3 example of grouped bar chart。这个例子中的任何帮助对我都很有帮助。

感谢。

2 个答案:

答案 0 :(得分:7)

我画了一个d3组条形图:

fiddle

您可以通过更改第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)