2017-04-20 90 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 ; })