nvd3 - multiBarHorizo​​ntalChart - sum is> 100%

时间:2017-04-19 12:27:37

标签: angularjs nvd3.js angular-nvd3

我使用angular-nvd3,我需要提供一些水平条,每条水平条都有一个计数和百分比。问题是百分比的总和有时是101%。例如: example problematic chart 有101%问题的解决方案 - 例如,如果百分比值为101%,则从一个百分比值中减去1。计数可以保持不变(因此第一个栏将是1 (16%))。 但是nvd3使用一个函数来接收条形值并需要返回将要呈现的字符串,这使得更难以计算出预处理解决方案。 知道如何使这项工作吗?

1 个答案:

答案 0 :(得分:0)

我想你可以试试这个:

所以你必须存储当前值的索引,因为 valueFormat 不能自己提供索引

var valueFormatIndex = 0;

var data = [{values: [ ... ] }];

var config = {

  ...,

  valueFormat: function(d, index){

    valueFormatIndex = valueFormatIndex + 1;

       // if its a last value we should round to lowest

       if(data[0].values.length == valueFormatIndex) {
          return Math.floor(d)
       }

       return Math.ceil(d) // otherwise return round to top
   },

   ... 

}

JSFiddle example