afreechart/src/main/java/org/afree/chart/plot/PieLabelDistributor.java
/**
     * Any labels that are overlapping are moved up in an attempt to eliminate
     * the overlaps.
     *
     * @param minY  the minimum y value (in Java2D coordinate space).
     * @param height  the height available for all labels.
     */
Any labels that are overlapping are moved up in an attempt to eliminate
the overlaps.

@param minY  the minimum y value (in Java2D coordinate space).
@param height  the height available for all labels.
Any labels that are overlapping are moved up in an attempt to eliminate the overlaps . @param minY the minimum y value ( in Java2D coordinate space ) . @param height the height available for all labels .
protected void adjustUpwards(double minY, double height) {
        for (int i = this.labels.size() - 1; i > 0; i--) {
            PieLabelRecord record0 = getPieLabelRecord(i);
            PieLabelRecord record1 = getPieLabelRecord(i - 1);
            if (record1.getUpperY() > record0.getLowerY()) {
                record1.setAllocatedY(Math.max(minY
                        + record1.getLabelHeight() / 2.0, record0.getLowerY()
                        - this.minGap - record1.getLabelHeight() / 2.0));
            }
        }
    }
protected void adjustUpwards ( double minY , double height ) { for ( int i = this . labels . size ( ) - 1 ; i > 0 ; i -- ) { PieLabelRecord record0 = getPieLabelRecord ( i ) ; PieLabelRecord record1 = getPieLabelRecord ( i - 1 ) ; if ( record1 . getUpperY ( ) > record0 . getLowerY ( ) ) { record1 . setAllocatedY ( Math . max ( minY + record1 . getLabelHeight ( ) / 2.0 , record0 . getLowerY ( ) - this . minGap - record1 . getLabelHeight ( ) / 2.0 ) ) ; } } }
Any labels that are overlapping are moved up in an attempt to eliminate
 the overlaps.
Any labels that are overlapping are moved up in an attempt to eliminate the overlaps .