afreechart/src/main/java/org/afree/chart/axis/NumberAxis.java
/**
     * Rescales the axis to ensure that all data is visible.
     */
Rescales the axis to ensure that all data is visible.
Rescales the axis to ensure that all data is visible .
protected void autoAdjustRange() {
        Plot plot = getPlot();
        if (plot == null) {
            return; 
        }
        if (plot instanceof ValueAxisPlot) {
            ValueAxisPlot vap = (ValueAxisPlot) plot;
            Range r = vap.getDataRange(this);
            if (r == null) {
                r = getDefaultAutoRange();
            }
            double upper = r.getUpperBound();
            double lower = r.getLowerBound();
            if (this.rangeType == RangeType.POSITIVE) {
                lower = Math.max(0.0, lower);
                upper = Math.max(0.0, upper);
            } else if (this.rangeType == RangeType.NEGATIVE) {
                lower = Math.min(0.0, lower);
                upper = Math.min(0.0, upper);
            }
            if (getAutoRangeIncludesZero()) {
                lower = Math.min(lower, 0.0);
                upper = Math.max(upper, 0.0);
            }
            double range = upper - lower;
            double fixedAutoRange = getFixedAutoRange();
            if (fixedAutoRange > 0.0) {
                lower = upper - fixedAutoRange;
            } else {
                double minRange = getAutoRangeMinimumSize();
                if (range < minRange) {
                    double expand = (minRange - range) / 2;
                    upper = upper + expand;
                    lower = lower - expand;
                    if (lower == upper) { 
                        double adjust = Math.abs(lower) / 10.0;
                        lower = lower - adjust;
                        upper = upper + adjust;
                    }
                    if (this.rangeType == RangeType.POSITIVE) {
                        if (lower < 0.0) {
                            upper = upper - lower;
                            lower = 0.0;
                        }
                    } else if (this.rangeType == RangeType.NEGATIVE) {
                        if (upper > 0.0) {
                            lower = lower - upper;
                            upper = 0.0;
                        }
                    }
                }
                if (getAutoRangeStickyZero()) {
                    if (upper <= 0.0) {
                        upper = Math.min(0.0, upper + getUpperMargin() * range);
                    } else {
                        upper = upper + getUpperMargin() * range;
                    }
                    if (lower >= 0.0) {
                        lower = Math.max(0.0, lower - getLowerMargin() * range);
                    } else {
                        lower = lower - getLowerMargin() * range;
                    }
                } else {
                    upper = upper + getUpperMargin() * range;
                    lower = lower - getLowerMargin() * range;
                }
            }
            setRange(new Range(lower, upper), false, false);
        }
    }
protected void autoAdjustRange ( ) { Plot plot = getPlot ( ) ; if ( plot == null ) { return ; } if ( plot instanceof ValueAxisPlot ) { ValueAxisPlot vap = ( ValueAxisPlot ) plot ; Range r = vap . getDataRange ( this ) ; if ( r == null ) { r = getDefaultAutoRange ( ) ; } double upper = r . getUpperBound ( ) ; double lower = r . getLowerBound ( ) ; if ( this . rangeType == RangeType . POSITIVE ) { lower = Math . max ( 0.0 , lower ) ; upper = Math . max ( 0.0 , upper ) ; } else if ( this . rangeType == RangeType . NEGATIVE ) { lower = Math . min ( 0.0 , lower ) ; upper = Math . min ( 0.0 , upper ) ; } if ( getAutoRangeIncludesZero ( ) ) { lower = Math . min ( lower , 0.0 ) ; upper = Math . max ( upper , 0.0 ) ; } double range = upper - lower ; double fixedAutoRange = getFixedAutoRange ( ) ; if ( fixedAutoRange > 0.0 ) { lower = upper - fixedAutoRange ; } else { double minRange = getAutoRangeMinimumSize ( ) ; if ( range < minRange ) { double expand = ( minRange - range ) / 2 ; upper = upper + expand ; lower = lower - expand ; if ( lower == upper ) { double adjust = Math . abs ( lower ) / 10.0 ; lower = lower - adjust ; upper = upper + adjust ; } if ( this . rangeType == RangeType . POSITIVE ) { if ( lower < 0.0 ) { upper = upper - lower ; lower = 0.0 ; } } else if ( this . rangeType == RangeType . NEGATIVE ) { if ( upper > 0.0 ) { lower = lower - upper ; upper = 0.0 ; } } } if ( getAutoRangeStickyZero ( ) ) { if ( upper <= 0.0 ) { upper = Math . min ( 0.0 , upper + getUpperMargin ( ) * range ) ; } else { upper = upper + getUpperMargin ( ) * range ; } if ( lower >= 0.0 ) { lower = Math . max ( 0.0 , lower - getLowerMargin ( ) * range ) ; } else { lower = lower - getLowerMargin ( ) * range ; } } else { upper = upper + getUpperMargin ( ) * range ; lower = lower - getLowerMargin ( ) * range ; } } setRange ( new Range ( lower , upper ) , false , false ) ; } }
Rescales the axis to ensure that all data is visible.
Rescales the axis to ensure that all data is visible .
// no plot, no data // if fixed auto range, then derive lower bound... // ensure the autorange is at least <minRange> in size... // see bug report 1549218