2016-08-14 24 views
2

Я пытаюсь уменьшить количество точек в линейной диаграмме DC.js для повышения производительности. docs приводят меня к мысли xUnits() это способ сделать это:dc.js не соблюдает xUnits

координатной сетку графики использует xUnits функцию для вычисления количества проекций данных на оси х, такие как количество баров для гистограммы или количество точек для линейной диаграммы.

но xUnits даже, кажется, не использовать:

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

Что я делаю неправильно?

ответ

0

Число точек на самом деле определяется crossfilter - dc.js не делает никакой агрегации самостоятельно, поэтому у нее нет возможности добавить или уменьшить количество точек.

Эта документация может вводить в заблуждение - она ​​не изменяет форму данных. xUnits действительно нужен только для dc.js, чтобы узнать количество элементов, которые он собирается нарисовать. Он используется для двух целей:

  • определить ширину полос или билетных участков
  • знать ли х масштаб порядковое или количественное

Может dc.js просто подсчитать количество очков в группе перекрестного фильтра? Может быть.

В любом случае, чтобы вернуться к исходному вопросу: если вы хотите уменьшить количество нарисованных точек, агрегируйте свои данные по-разному в своей группе. Обычно это означает создание больших бункеров, которые либо суммируют, либо усредняют данные, которые попадают в этот интервал.

В качестве простого примера, вы можете комбинировать любой другой момент в вашей скрипке на биннинга четных чисел, например, так:

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

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

Это приводит к тому, например, и Run 6, и Run 7, чтобы попасть в один и тот же бит, потому что они имеют один и тот же групповой ключ. В реальном примере вы, вероятно, захотите усреднить их, как показано в the annotated stock example.

Смежные вопросы