code: function(){
      var a = this.axes,
        xaxis, yaxis, range;
  
      _.each(this.series, function (series) {
        range = series.getRange();
        if (range) {
          xaxis = series.xaxis;
          yaxis = series.yaxis;
          xaxis.datamin = Math.min(range.xmin, xaxis.datamin);
          xaxis.datamax = Math.max(range.xmax, xaxis.datamax);
          yaxis.datamin = Math.min(range.ymin, yaxis.datamin);
          yaxis.datamax = Math.max(range.ymax, yaxis.datamax);
          xaxis.used = (xaxis.used || range.xused);
          yaxis.used = (yaxis.used || range.yused);
        }
      }, this);
  
      // Check for empty data, no data case (none used)
      if (!a.x.used && !a.x2.used) a.x.used = true;
      if (!a.y.used && !a.y2.used) a.y.used = true;
  
      _.each(a, function (axis) {
        axis.calculateRange();
      });
  
      var
        types = _.keys(flotr.graphTypes),
        drawn = false;
  
      _.each(this.series, function (series) {
        if (series.hide) return;
        _.each(types, function (type) {
          if (series[type] && series[type].show) {
            this.extendRange(type, series);
            drawn = true;
          }
        }, this);
        if (!drawn) {
          this.extendRange(this.options.defaultType, series);
        }
      }, this);
    }
docs: Function determines the min and max values for the xaxis and yaxis.
  
  TODO logarithmic range validation (consideration of 0)