2017-07-15 18 views
1

私はdc.js/crossfilter.jsで少し遊んでいましたが、私の周りを包み込むことができなかった問題が発生しました。このパターンへの私のデータスティック:dc.js:ネストされたグループ化のBoxplot

[2016-02-01, "Lorem ipsum", -45] [2016-02-03, "Lorem ipsum", 34] [2016-03-04, "Lorem ipsum", 101] ...

日あたりの数値を持つので、基本的に時系列。私がしたいこと:ボックスプロットを1つのボックスで描画し、月の合計の中央値などを表示します(つまり、1ヶ月の合計はドットで反映され、ウィスカーはすべての月に分位数を表示します)。私が最初にこれらの値を取得するために、月によってグループ/合計に必要があるだろうことを意味:

[2016-02, 79] [2016-03, 101] ...

私はdc.jsでそれを行う方法ものの知らない - 月ごとにIグループ場合は、次に使用私のボックスプロットでは、1ヶ月に1箱が得られ、測定値は無条件項目を参照しています。 dc.jsのフレームワークには意味がありますが、それは私が探しているものではありません。

これはどのようにするのですか?ご協力いただきありがとうございます!

敬具

編集:Added rendered boxplot

答えて

0

うん、ボックスプロットは、値が数値の配列で、キー/値のペアの配列を返すようにgroup.all()を期待しています。

グラフのクロスフィルタデータを変更する必要がある場合は、現在、fake groupが最適な手法です。これが唯一の方法は、crossfilterグループからデータを引っ張って、用途、(*)group.all()をdc.js実装するオブジェクトである:

function one_bin(group, key) { 
    return { 
    all: function() { 
     return [{ 
     key: key, 
     value: group.all().map(kv => kv.value) 
     }]; 
    } 
    }; 
} 

one_binは、元のグループとキー名をとります。 1つのキー/値を持つ配列を生成します。ここで、キーはキー名であり、値は元のグループのすべての値の配列です。

one_binであなたの元のグループをラップし、ボックスプロットに渡し:もちろん

var box = dc.boxPlot('#box') 
    .width(200).height(500) 
    .dimension(monthDim) // this is actually wrong but can't brush anyway 
    .group(one_bin(monthGroup, 'all months')) 
; 

を、ブラッシングが動作しませんが、それだけでこのチャートのx次元を有する全か無かだろう。

例フィドル:dc.js 2.1以降https://jsfiddle.net/q8m54cg3/15/

(*)。 2.0以下はgroup.top(N)も使用しました。

+0

ありがとうございました!自分のデータで試してみるとすぐにお返事します。 – onemorequestion

+0

したがって、ボックスプロットはレンダリングされますが、ちょっと見えます。ウィスカーが欠落しています(元の投稿の画像を参照)。どんな考え? – onemorequestion

+0

dc.cssを含めましたか?スタイリングが台無しになっているように見えます(それは私のフィドルで大丈夫です)。 – Gordon

関連する問題