【问题标题】:d3js - Column Graph - data point alignmentd3js - 柱形图 - 数据点对齐
【发布时间】:2012-07-21 10:04:32
【问题描述】:


这是我使用 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 });

【问题讨论】:

    标签: javascript graph d3.js


    【解决方案1】:

    您可以通过调整g.containertransform 或附加矩形的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.values 之间差异的一半)。

    【讨论】:

    • 我如何找出这种差异?如果我能找出我的刻度所在的值,我可以简单地使用它
    • 您只需计算两个连续的dimension.value 之间的差异。大概这是您的 JSON 中的内容?
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多