2017-04-20 82 views
1

如何計算值訪問器中的百分比?我認爲我可以只添加分組值並分開,然後將其乘以得到百分比?計算假組的百分比

var fakeGroup = { 
       top: function() { 
       return [ 
        votes.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")) 
     .valueAccessor(function(){ return fakeGroup/538 * 100; }) 
+0

把控制檯的語句在你valueAccessor,我懷疑你就可以看到你需要做什麼:'.valueAccessor(函數(d){執行console.log(d) ; return fakeGroup/538 * 100;})'它會像'.valueAccessor(function(d){return d.value/538 * 100;})一樣' –

+0

當所有狀態被選中時它現在顯示一個100%值,但是在選擇個別狀態時,它知道該州的選舉人數,但數字顯示未用%計算更新,因此數字框留空。不知道爲什麼它不起作用,因爲它知道538票是100%和其他價值正在給予。 –

+0

明白了,僅僅是因爲它返回了一個不完整的值。謝謝 –

回答

1

添加Ethans建議後,由於十進制格式不正確,代碼仍然不會打印,因爲它是返回值,例如7.33。一旦我改變,顯示的數字完美工作。

代碼:

percentElec 
     .group(fakeGroup) 
     .formatNumber(d3.format(".2f")) 
     .valueAccessor(function(d){ return d.value/538 * 100 ; })