diff --git a/src/kibana/components/vislib/lib/data.js b/src/kibana/components/vislib/lib/data.js index d18e55abb623..596414417ee2 100644 --- a/src/kibana/components/vislib/lib/data.js +++ b/src/kibana/components/vislib/lib/data.js @@ -622,6 +622,18 @@ define(function (require) { return extents; }; + /** + * Get the maximum number of series, considering each chart + * individually. + * + * @return {number} - the largest number of series from all charts + */ + Data.prototype.maxNumberOfSeries = function () { + return this.chartData().reduce(function (max, chart) { + return Math.max(max, chart.series.length); + }, 0); + }; + return Data; }; }); diff --git a/src/kibana/components/vislib/lib/handler/types/point_series.js b/src/kibana/components/vislib/lib/handler/types/point_series.js index 2eecad23bf97..ba70b2895edc 100644 --- a/src/kibana/components/vislib/lib/handler/types/point_series.js +++ b/src/kibana/components/vislib/lib/handler/types/point_series.js @@ -67,7 +67,11 @@ define(function (require) { msg: 'Positive and negative values are not accurately represented by stacked ' + 'area charts. The line chart is better suited for this type of data.', test: function (vis, data) { - return vis._attr.mode === 'stacked' && data.gitYMax(data._getY) > 0 && data.gitYMin(data._getY) < 0; + if (!data.shouldBeStacked() || data.maxNumberOfSeries() < 2) return; + + var hasPos = data.getYMax(data._getY) > 0; + var hasNeg = data.getYMin(data._getY) < 0; + return (hasPos && hasNeg); } } ]