当数据为0时,如何使chartJs堆积条总是四舍五入?

我想出了这个小提琴:https : //jsfiddle.net/2s09hqLu/ 它有我想要的堆叠圆角图表。但问题是当数据数组中的值为 0 时。它不会使它四舍五入。我总是希望它是四舍五入我该怎么做?

data: [20, 5, 0, 15, 12, 13]

http://img2.mukewang.com/63414c5d0001caa108100342.jpg

正如您在黄色上看到的那样,它的平面不是圆形的。我该如何解决这个问题?



慕的地8271018
浏览 173回答 3
3回答

炎炎设计

我在下面尝试过,并且可以完美地处理任何数量的数据集。var lastVisible;  var datasetsLength = this._chart.data.datasets.length;  this._chart.data.datasets.map((e,index)=>{    lastVisible=datasetsLength-1;    //to find the depth of datasets and get non-zero value    for(var i=lastVisible;i>0;i--){    if(!this._chart.getDatasetMeta(i).hidden){      if(this._chart.data.datasets[i].data[this._index] != 0){        lastVisible = i;        break;      }    }    }   })

慕盖茨4494581

我已经更新了您的 Fiddle 唯一行号118: https ://jsfiddle.net/r7hvn2ox/从:if (rounded){至:if (rounded || this._chart.data.datasets[1].data[this._index] == 0) {我知道它对 2 个数据集的修复:[{}, {}] 条,但它可以在任何数据集的值以及本示例中完美地工作。

肥皂起泡泡

rounded如果它呈现特定项目,您可以向变量添加额外的表达式。这不是最好的方法。var rounded = this._datasetIndex  === lastVisible || this._index === 2;或者,您可以比较每个数据集中的值var cond = false;if(this._datasetIndex === 0) {  var datasets = this._chart.data.datasets;  var dataset = datasets[this._datasetIndex];  var currentData = dataset.data[this._index];  var nextData = datasets[this._datasetIndex + 1].data[this._index]  cond = currentData !== 0 && nextData === 0;}var rounded = this._datasetIndex  === lastVisible || cond;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript