14

Crossfilter (https://github.com/square/crossfilter) を使用する場合、グループにデータを追加および削除するときに使用する関数を指定します。移動平均を追跡するのはかなり簡単です (CoffeeScript を使用):

reduceAdd = (p, v) ->
  ++p.count;
  p.sum += v.digit;
  p

reduceRemove = (p, v) ->
  --p.count;
  p.sum -= v.digit;
  p

reduceInitial = ->
  {
    count: 0
    sum: 0
    average: ->
      return 0 if this.count == 0
      return this.sum / this.count
  }

各グループの最大値と最小値を追跡することは可能ですか? すべての要素を巨大な配列に保持し、d3.min / d3.max を実行する方法がわかりません。データの追加/削除は非常に効率が悪いようです。

また、既存のグループからアイテムを削除するのではなく、グループをゼロから完全に再構築するように Crossfilter に指示する方法も探しました。フィルターが適用されている場合、グループはリセットされ、再構築されます。明らかなことは何もありません。

4

3 に答える 3

9

現在の最小値と最大値を取得するには、 dimension.top (1)dimension.bottom(1)を使用できます。これらのメソッドは、クロスフィルターでアクティブになる可能性のあるすべてのフィルターを尊重します。

于 2012-07-01T13:46:45.030 に答える
0

これを少しいじった後、もう一度 group メソッドを呼び出すだけでグループを再構築できます。

于 2012-05-11T18:00:23.240 に答える