私は、dc.jsの多次元データセットの連続変数に関連付けられた2つのヒストグラムをプロットしようとしています。これはdc.barChart
コンポーネントで実現するのは簡単ですが、これらのヒストグラムを領域正規化したいと考えています。私の場合、ビンの幅は均一であるため、各ビン/グループの合計数を(binWidth * totCounts)
で割るという問題がありません。crossfilter/dc.jsを使用してエリア正規化棒グラフを効率的にプロットするには?
var cf = crossfilter(data);
var totCounts = cf.groupAll().value();
var histDimension = cf.dimension(function(d) {
return Math.floor(d.fieldOfInterest/binWidth) * binWidth;
});
var histGroup = histDimension.group().reduceSum(function(d) {
return 1/(binWidth * totCounts);
});
面積正規化された棒グラフにつながるんdc.jsと、このアプローチをカップリング:
は、私は、次の線に沿って何かを使用して正規化した領域だったこれらのヒストグラムの初期ビューをプロットすることができました。しかし、データのフィルタリングを開始すると、フィルタリングされたデータは再正規化されません。代わりに、ビューは常に、フィルタリングされていないデータセットの元の領域正規化のレンズを通してデータを表示します。私はこれがなぜそうであるのか理解していますが、クロスフィルターのレデューサー機能はまだ初期正規化を使用しています...私が探しているものを達成するためのもっともらしく効果的な方法があるかどうかはわかりません。つまり、dc.jsプロットビューを常にフィルタリングされたデータセットに対して再正規化することができます。任意の単一のビン/グループの正規化には、すべてのグループ(totCounts)からの情報が必要だったため、効率的なクロスフィルタリングのための機能を減らす/実行する方法が定義されていないようです。
私が探していることを達成するためのいくつかの明白な方法がないか、これはcrossfilter/dc.jsで達成できるという希望を放棄すべきですか?私は正しい方向に私を指し示すかもしれないどんな入力も感謝します。
は希望を捨てないでください!方法が常にある! – Gordon