diff --git a/spec/internals/data-spec.js b/spec/internals/data-spec.js index 47aec27cb..8ab6474ab 100644 --- a/spec/internals/data-spec.js +++ b/spec/internals/data-spec.js @@ -1523,6 +1523,8 @@ describe("DATA", () => { ["data1", 230, null, 300], ["data2", 198, 87, null] ]; + + args.data.hide = ["false-data"]; }); it("check for null data", done => { diff --git a/src/data/data.js b/src/data/data.js index c184d98b8..c5b89747f 100644 --- a/src/data/data.js +++ b/src/data/data.js @@ -795,18 +795,19 @@ extend(ChartInternal.prototype, { let total = this.getTotalPerIndex(); if ($$.hiddenTargetIds.length) { - const hiddenSum = dataValues($$.hiddenTargetIds, false) - .reduce((acc, curr) => acc.map((v, i) => (isNumber(v) ? v : 0) + curr[i])); + let hiddenSum = dataValues($$.hiddenTargetIds, false); - total = total.map((v, i) => v - hiddenSum[i]); - } - - d.ratio = 0; + if (hiddenSum.length) { + hiddenSum = hiddenSum + .reduce((acc, curr) => acc.map((v, i) => (isNumber(v) ? v : 0) + curr[i])); - if (isNumber(d.value) && total && total[d.index] > 0) { - d.ratio = d.value / total[d.index]; + total = total.map((v, i) => v - hiddenSum[i]); + } } + d.ratio = isNumber(d.value) && total && total[d.index] > 0 ? + d.value / total[d.index] : 0; + ratio = d.ratio; } else if (type === "radar") { ratio = (parseFloat(Math.max(d.value, 0)) / $$.maxValue) * config.radar_size_ratio;