2016-04-07 5 views
0

をcrossfilter.js dc.jsに機能を削減私は、カスタム次いるカスタムオーダー

function reduceAdd(p, v) { 
    p.vol_t += v.oqt; 
    p.prc_t += v.it; 
    ++p.count; 
    // p.average = d3.round((p.total/p.count), 2); 
    return p; 
} 

function reduceRemove(p, v) { 
    p.vol_t -= v.oqt; 
    p.prc_t -= v.it; 
    --p.count; 
    // p.average = d3.round((p.total/p.count), 2); 
    return p; 
} 

function reduceInitial() { 
    return { 
    vol_t: 0.0, 
    prc_t: 0.0, 
    count: 0, 
    }; 
} 

私のデータモデルの機能を減らす、次のとおりです。

[{cat:'a', oqt:23.0, it: 45.0}, 
    {cat:'b', oqt:25.0, it: 5.0}, 
    {cat:'b', oqt:22.0, it: 25.0}, 
    {cat:'c', oqt:17.0, it: 35.0}] 

私がプロットしようとしていますバリューチャートのdc.jsにvol_tをX(keyAccessor)、prc_tをY軸(valueAccessor)としてカウントし、radiusAcessorとしてカウントします。すべてのグループで最大値と最小値を見つけるにはどうしたらいいですか?私のグループはカテゴリ 'cat'ディメンションに基づいています。

ありがとうございます!

答えて

2

あなたは、その値に基づいて、グループのために、任意の順序を定義することができます。https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order

をしかし、あなたはdc.jsバブルチャートを使用している場合、私は特定の順序を定義する必要はないと思います。適切なアクセサを定義するだけで済みます。

+0

私の軸のドメインと範囲に必要です。私は、最上位(1)[0]の順番で最大値、最小値を計算したいと考えていました。したがって、X軸の場合はボリュームで注文し、Y軸の場合は価格で注文する必要があります。 – bashhike

+0

ドメインを一度設定する場合は、このためにCrossfilterを使用しないでください。データを数値のリストに変換し(Array.mapを使用)、Math.minとMath.maxを使用するだけです。必要に応じてd3.extentを使用してください。 elasticX/elasticYを使用している場合は、dc.jsがこれを処理すると思います。 –

1

d3.extentを使用して、ボリュームと価格を返すカテゴリグループとアクセサ関数を渡して解決しました。

関連する問題