2017-05-04 4 views
0
からデータ

のD3のhistogramレイアウトは[6, 9, 4, 2, 0, 6, 9]のような形式でデータを期待し、それがあなたのドメインに基づいてきちんとビンを作成し、ダニなどd3.histogram - 再ビンCrossfilter

Crossfilterグループデータヒストグラム構造(多かれ少なかれ)、このような構造で:

[ 
    { key: 0, value: 1 }, 
    { key: 1, value: 8 }, 
    { key: 3, value: 7 }, 
] 

はオブジェクトがビンの数2キーのがないことに注意してくださいは、データとは異なる値のわずか数です。その間にd3.histogram().threshholds(...)は、私が取得するビンの数を制御することができます。

私はCrossfilterのデータを視覚化し、便利なビンを作るd3.histogram()の能力を利用したいと思います。 Crossfilterデータを解析するために使用できるアクセサー関数がいくつかありますか?あるいは、最初にそれを規則的な配列に強制する必要がありますか?

+1

これは私が理解していないものです: 'D3を「ヒストグラム」は生データを取り込み、ビンに入れるように設計されています。 Crossfilterはこれと同じことを行い、表示されたグループ出力はすでに「ビンニング」されているか、集約されています。私はCrossfilterを使うか、 'd3.histogram'を使うと言うでしょうが、私は両方を使う理由は見当たりません。 d3ビジュアライゼーションでCrossfilterの出力を使用する方法が他にも問題がある場合は、その問題に対処できますが、http://eng.wealthfront.com/2012/09/05/explore-your-multivariate-tutorialsのようなチュートリアルもあります。 data-with-crossfilter/ –

+0

主な相違点は、 'd3.histogram.threshholds()'のようなものを使用して、 'd3.histogram'からのbinの_数に対する柔軟性です。 入力データに100万の異なる値がありますが、たとえば15ビンしか必要ない場合。 申し訳ありませんが、私は尋ねる理由をより明確にすべきでした。私は明確にするために質問を更新します。 – DMack

+0

Crossfilterのdimension.groupには、ディメンションキーのグループ化の仕方を制御するアクセサ関数が用意されています。それはあなたが探しているものですか? https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_group –

答えて

0

私はまだこれを模索していますが、ここではD3のhistogramレイアウトのためのアレイにCrossfilterグループのデータを拡大/平らにしますreduce機能です:

// reduce callback function 
function flattenGroupData(flattened, currentRecord) { 
    let value = currentRecord.key; 
    let quantity = currentRecord.value; 
    let expandedArray = Array(quantity).fill(value); 
    return flattened.concat(expandedArray); 
} 

let groupData = myCrossfilterGroup.all(); 

let dataForD3 = groupData.reduce(flattenGroupData, []); 
関連する問題