dc.js 不尊重 xUnits

dc.js not respecting xUnits

我正在尝试减少 DC.js 折线图中的点数以提高性能。 docs 让我相信 xUnits() 是这样做的方法:

The coordinate grid chart uses the xUnits function to calculate the number of data projections on x axis such as the number of bars for a bar chart or the number of dots for a line chart.

xUnits 似乎甚至没有被使用:

http://jsfiddle.net/m5tguakf/2/

我做错了什么?

点数实际上是由crossfilter决定的-dc.js本身不做任何聚合,所以它没有办法增加或减少点数。

该文档可能会产生误导 - 它不会改变数据的形状。 xUnits 确实只需要 dc.js 就可以知道要绘制的元素数量。它有两个用途:

  • 确定条形图或箱线图的宽度
  • 了解 x 标度是有序的还是定量的

可以dc.js只计算crossfilter组中的点数吗?或许吧。

无论如何,回到您最初的问题:如果您想减少绘制的点数,请在您的组中以不同方式汇总数据。通常这意味着创建更大的 bin,对落入该区间的数据求和或取平均值。

作为一个简单的例子,您可以通过按偶数分箱来合并 fiddle 中的所有其他点,如下所示:

var BINSIZE = 2;
  // ...
  speedSumGroup = runDimension
     .group(function(r) { return Math.floor(r/BINSIZE) * BINSIZE; })
  // ...

http://jsfiddle.net/gordonwoodhull/djrhodkj/2/

这导致例如运行 6 和 运行 7 都落在同一个容器中,因为它们具有相同的组密钥。在真实示例中,您可能希望对它们进行平均,如 the annotated stock example.

所示