2012-02-27 6 views
0

ビジュアライゼーションプロジェクト用に(JavaScriptで)いくつかの「モックデータ」を作成したいと思います。可視化のための偽の配布データ

好ましく、Iは、正常または対数正規一部確率分布関数、即ちに従ってY異なるグループZステップ間隔X単位の合計を割り当てたいです。

例:

は、通常密度関数を用いて、[...]、グループ0から5000まで、5000から10000に正確に100単位を割り当て75000から80000。

はこのようなものにレンダリングする必要があります(私はシンプルシードパラメータを使用して、いくつかの歪度を導入することができれば、それはボーナスだろう)

binNames = [ "0-5000", "5000-10000", [...] ] 
binData = [ 0,0,0,1,2,10,12,14,12,10 [...] ] //SUM = 100 

答えて

7

D3.js libraryは、これに有用なツールを持っています。d3.random.normalreference,code)です。 D3を使用していなくても、関数を独自のコードにコピーできます。これは、あなたが提供する平均と標準偏差に基づいて正規分布を持つ乱数を生成するジェネレータ関数を返します。その機能を使用して

、あなたが欲しいの形式でいくつかのランダムなデータを作ることができ、このように:

// data generator 
var bins = 16, 
    target = 100, 
    step = 5000, 
    max = bins * step, 
    stddev = max * .15, 
    data = [], 
    generator = d3.random.normal(max/2, stddev), 
    x=0, y=0; 

// set up bins 
while (x++ < bins) data.push(0); 
// add numbers 
while (y++ < target) { 
    // get a new number 
    var number = generator(); 
    // don't allow numbers outside the desired range 
    number = ~~Math.max(0, Math.min(number, max)); 
    // increment the bin 
    bin = ~~(number/max * bins); 
    data[bin]++; 
} 

私は、一例として、少しアニメーションヒストグラムを作っ:http://bl.ocks.org/2034281

0

あなたが探しているアルゴリズムをkd-treeまたはtreemapです。 kdツリーは次元の複雑さを低減する。ダウンロード可能な無料のjqueryツリーマップがあります。

関連する問題