docs: function () {
              var axis = this,
                chart = axis.chart;
  
              axis.hasVisibleSeries = false;
  
              // Reset properties in case we're redrawing (#3353)
              axis.dataMin = axis.dataMax = axis.ignoreMinPadding = axis.ignoreMaxPadding = null;
  
              if (axis.buildStacks) {
                  axis.buildStacks();
              }
  
              // loop through this axis' series
              each(axis.series, function (series) {
  
                  if (series.visible || !chart.options.chart.ignoreHiddenSeries) {
  
                      var seriesOptions = series.options,
                        xData,
                        threshold = seriesOptions.threshold,
                        seriesDataMin,
                        seriesDataMax;
  
                      axis.hasVisibleSeries = true;
  
                      // Validate threshold in logarithmic axes
                      if (axis.isLog && threshold <= 0) {
                          threshold = null;
                      }
  
                      // Get dataMin and dataMax for X axes
                      if (axis.isXAxis) {
                          xData = series.xData;
                          if (xData.length) {
                              axis.dataMin = mathMin(pick(axis.dataMin, xData[0]), arrayMin(xData));
                              axis.dataMax = mathMax(pick(axis.dataMax, xData[0]), arrayMax(xData));
                          }
  
                          // Get dataMin and dataMax for Y axes, as well as handle stacking and processed data
                      } else {
  
                          // Get this particular series extremes
                          series.getExtremes();
                          seriesDataMax = series.dataMax;
                          seriesDataMin = series.dataMin;
  
                          // Get the dataMin and dataMax so far. If percentage is used, the min and max are
                          // always 0 and 100. If seriesDataMin and seriesDataMax is null, then series
                          // doesn't have active y data, we continue with nulls
                          if (defined(seriesDataMin) && defined(seriesDataMax)) {
                              axis.dataMin = mathMin(pick(axis.dataMin, seriesDataMin), seriesDataMin);
                              axis.dataMax = mathMax(pick(axis.dataMax, seriesDataMax), seriesDataMax);
                          }
  
                          // Adjust to threshold
                          if (defined(threshold)) {
                              if (axis.dataMin >= threshold) {
                                  axis.dataMin = threshold;
                                  axis.ignoreMinPadding = true;
                              } else if (axis.dataMax < threshold) {
                                  axis.dataMax = threshold;
                                  axis.ignoreMaxPadding = true;
                              }
                          }
                      }
                  }
              });
          }