2017-04-12 10 views
2

次の結果をhttps://jsfiddle.net/ajey2987/0bqjydx8/26/, にする必要はありません。他の次元、グループ、グラフを作成する必要はありません。つまり、region2dim、numxregion2、関数reflect_filtersはありません。次元とグラフを作成せずに行を組み込む

var regiondim = ndx.dimension(function(d){return d.Region;}); 
var regiondim2= ndx.dimension(function(d){return d.Region;}); 
var numxregion=regiondim.group(); 
var numxregion2=regiondim2.group(); 

これは可能ですか?

リージョンの名前をクリックすると、それらは1つずつ組み込まれ、選択したデータに基づいてパーセンテージを再計算します。

よろしく

私はここで重要な洞察がグループが独自の寸法上のオブザーバフィルタをしないので、何をする必要がありますする2次元を作成し、設定されていることだと思うそんなに

+0

グループおよび寸法はdimension.filter'コール '後に自動的に更新されます。 'group.top'または' group.all'を使ってグループに再度問い合わせると、更新された集約が得られます。しかし、注意してください:https://github.com/crossfilter/crossfilter/wiki/Crossfilter-Gotchas#a-group-does-not-observe-its-dimensions-filters –

+0

私はregiondim2とnumxregion2を削除し、同じインタラクティブグラフですか? – ajey2987

+0

リンクされた例では、1つのチャートのみをレンダリングするので、はいです。しかし、私はあなたが他の何かに行くと思われます。あなたが見たいものと見たいものと何を見ているのかをもっと説明できますか? –

答えて

1

ありがとうございましたdc.js chartはリンクされていないディメンションとグループを使用します。 %計算もまた、フィルタ次元にリンクされていない必要があるgroupAllグループに依存するため、このグループも第2次元に作成することをお勧めします。

だからあなたの次元とグループの定義は次のようになります。

var ndx = crossfilter(datos); 
var regiondim = ndx.dimension(function(d) { 
    return '' + d.Region; 
}); 
var regiondim2 = ndx.dimension(function(d) { 
    return '' + d.Region; 
}); 
var numxregion2 = regiondim2.group(); 
var countgroup = regiondim2.groupAll().reduceCount() 

そして、あなたのdc.jsチャートの定義は(削除書式設定で、あなたの例に基づいて)次のようになります。

barraxregion 
    .dimension(regiondim) 
    .group(numxregion2) 
    .title(function(d) { 
    return d.value + " (" + (d.value/countgroup.value() * 100).toFixed(1) + "%)" 
    }) 

タイトルには、前に定義したcountgroupに基づいた値と全体の%が表示されます。

例の作業バージョン:https://jsfiddle.net/esjewett/f4yqu8zo/1/

+0

ありがとうございます!しかし、それは2つの次元が必要ですか? – ajey2987

+0

優秀 - うれしいです! –

+0

しかし、2つの次元が必要ですか? – ajey2987

関連する問題