2017-04-19 7 views
1

私は地図表示をしていて、選択された州のすべての選挙投票を合計し、数値表示で表示したいと思います。私は、以前のスレッドでトップグループのメソッドでオブジェクトを使ってグループをラップするアドバイスを受けました。私はこれまでのところ、私が持っている、これを実行するかどうかはわかりません。トップの方法でグループをラップする方法

var stateDim4 = ndx.dimension(function(d) { return d.state; }), 
     group = stateDim4.group().reduceSum(function(d) {return d.elecVote }), 
     count = group.top(51); 
    count[0].key; 
    count[0].value; 

誰かがこれを行う方法で私を助けることができるしてください? 前のスレッド:Summing a column and displaying percentage in a number chart

答えて

2

上記の例では、topメソッドを持つ偽のグループを作成し、選択した状態のすべての選挙投票を集計します。ここで

var fakeGroup = { 
    top: function() { 
    return [ 
     grp2.top(Infinity).reduce(function(a,b) { 
     if(b.value > 0) { 
      a.value += elecVotesMap.get(b.key) 
     } 
     return a 
     }, { 
     key: "", 
     value: 0 
     }) 
    ] 
    } 
} 


percentElec 
    .group(fakeGroup) 
    .formatNumber(d3.format("d")) 

作業JSFiddleです:https://jsfiddle.net/esjewett/u9dq33v2/2/

dc.js FAQ内の他の偽のグループの例の束がありますが、私はそれらのいずれかは、あなたがここに欲しい正確に何をやるとは思いません。

+0

ありがとうございます。エラーgroup.allがnumber-display.jsの関数ではありません。 –

+0

古いバージョンのdc.jsを使用していますか?これは2.1 devブランチで実行されています。これは 'all'ではなく' top'を使用します。この例で 'top'を' all'で置き換えてみてください。 –

+0

dc.js 2.0。*以前のバージョンを使用している場合、おそらく[.top()と.all() '](https://github.com/dc-js/dc)が必要です.js/wiki/FAQ#-but-i-need-top)。 2.1。*を実行している場合は、 '.all()'だけが必要です( '' chart.ordering'を設定する必要があります)(http://dc-js.github.io/dc.js/docs/html /dc.baseMixin.html#ordering__anchor))。 – Gordon

関連する問題