3

我最近发现了 dc.js,并一直在尝试使用 d3.js 网站上提供的条形图示例来实现一个简单的条形图:http: //bl.ocks.org/mbostock/3885304

但是,作为 dc.js 实现的一部分,需要一个交叉过滤器维度和组。

因此,使用带有“字母”和“频率”的简单 TSV 文件,我将代码更改为如下所示:

d3.tsv('testdata.tsv', function(error, data) {
  var cf = crossfilter(data);

  var dimension = cf.dimension(function(d){
    return d.letter;
  }

  var group = dimension.group().reduce(
    function(p,v){ 
      p.frequency += v.frequency
    }, 
    function(p,v){ 
      p.frequency -= v.frequency
    },
    function(){ 
      return { frequency: 0  };
  });

我对应该将 valueAccessor 设置为什么(在我的条形图上)有点困惑,因为当我将 valueAccessor 设置为返回“频率”时,我将 xAxis 比例设置为具有所有“字母”域的序数在数据集中,我得到了一个渲染的条形图,其中几乎所有的 x 轴值(“A - Y”)都位于零点,一个 x 轴值(即“Z”)位于 x 轴线的末端.

我试过设置范围,但似乎没有奏效。任何关于我误解的想法将不胜感激!

4

1 回答 1

8

原来我必须将 .xUnits 属性设置为 dc.units.ordinal() 才能使 x 轴正确间隔!

于 2013-03-12T22:02:30.757 回答