## org.jfree.chart.plot
Class PiePlot

    java.lang.Object
      org.jfree.chart.plot.Plot
          org.jfree.chart.plot.PiePlot

All Implemented Interfaces:
  AxisChangeListener, java.lang.Cloneable, DatasetChangeListener, java.util.EventListener, java.io.Serializable

Direct Known Subclasses:
  PiePlot3D

public class PiePlot
extends Plot
implements java.lang.Cloneable, java.io.Serializable

A plot that displays data in the form of a pie chart, using data from any class that implements the `PieDataset` interface.

Special notes:

1. the default starting point is 12 o'clock and the pie sections proceed in a clockwise direction, but these settings can be changed;
2. negative values in the dataset are ignored;
3. there are utility methods for creating a `PieDataset` from a `CategoryDataset`;

See Also:
  `Plot`, `PieDataset`, Serialized Form

Field Summary
`static double` `DEFAULT_INTERIOR_GAP` The default interior gap.
`static java.awt.Paint` `DEFAULT_LABEL_BACKGROUND_PAINT` The default section label background paint.
`static java.awt.Font` `DEFAULT_LABEL_FONT` The default section label font.
`static java.awt.Paint` `DEFAULT_LABEL_OUTLINE_PAINT` The default section label outline paint.
`static java.awt.Stroke` `DEFAULT_LABEL_OUTLINE_STROKE` The default section label outline stroke.
`static java.awt.Paint` `DEFAULT_LABEL_PAINT` The default section label paint.
`static java.awt.Paint` `DEFAULT_LABEL_SHADOW_PAINT` The default section label shadow paint.
`static double` `DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW` The default minimum arc angle to draw.
`static double` `DEFAULT_START_ANGLE` The default starting angle for the pie chart.
`protected static java.util.ResourceBundle` `localizationResources` The resourceBundle for the localization.
`static double` `MAX_INTERIOR_GAP` The maximum interior gap (currently 40%).

Fields inherited from class org.jfree.chart.plot.Plot
`DEFAULT_BACKGROUND_ALPHA, DEFAULT_BACKGROUND_PAINT, DEFAULT_FOREGROUND_ALPHA, DEFAULT_INSETS, DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, MINIMUM_HEIGHT_TO_DRAW, MINIMUM_WIDTH_TO_DRAW, ZERO`

Constructor Summary
`PiePlot()` Creates a new plot.
`PiePlot(PieDataset dataset)` Creates a plot that will draw a pie chart for the specified dataset.

Method Summary
`java.lang.Object` `clone()` Returns a clone of the plot.
`void` `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea, PlotState parentState, PlotRenderingInfo info)` Draws the plot on a Java 2D graphics device (such as the screen or a printer).
`protected void` `drawItem(java.awt.Graphics2D g2, int section, java.awt.geom.Rectangle2D dataArea, PiePlotState state, int currentPass)` Draws a single data item.
`protected void` `drawLabels(java.awt.Graphics2D g2, java.util.List keys, double totalValue, java.awt.geom.Rectangle2D plotArea, java.awt.geom.Rectangle2D linkArea, PiePlotState state)` Draws the labels for the pie sections.
`protected void` `drawLeftLabel(java.awt.Graphics2D g2, PiePlotState state, PieLabelRecord record)` Draws a section label on the left side of the pie chart.
`protected void` `drawLeftLabels(KeyedValues leftKeys, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea, java.awt.geom.Rectangle2D linkArea, float maxLabelWidth, PiePlotState state)` Draws the left labels.
`protected void` `drawPie(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea, PlotRenderingInfo info)` Draws the pie.
`protected void` `drawRightLabel(java.awt.Graphics2D g2, PiePlotState state, PieLabelRecord record)` Draws a section label on the right side of the pie chart.
`protected void` `drawRightLabels(KeyedValues keys, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea, java.awt.geom.Rectangle2D linkArea, float maxLabelWidth, PiePlotState state)` Draws the right labels.
`boolean` `equals(java.lang.Object obj)` Tests this plot for equality with an arbitrary object.
`protected java.awt.geom.Rectangle2D` `getArcBounds(java.awt.geom.Rectangle2D unexploded, java.awt.geom.Rectangle2D exploded, double angle, double extent, double explodePercent)` Returns a rectangle that can be used to create a pie section (taking into account the amount by which the pie section is 'exploded').
`java.awt.Paint` `getBaseSectionOutlinePaint()` Returns the base section paint.
`java.awt.Stroke` `getBaseSectionOutlineStroke()` Returns the base section stroke.
`java.awt.Paint` `getBaseSectionPaint()` Returns the base section paint.
`PieDataset` `getDataset()` Returns the dataset.
`org.jfree.util.Rotation` `getDirection()` Returns the direction in which the pie sections are drawn (clockwise or anti-clockwise).
`double` `getExplodePercent(int section)` Returns the amount that a section should be 'exploded'.
`boolean` `getIgnoreNullValues()` Returns the flag that controls whether `null` values in the dataset are ignored.
`double` `getInteriorGap()` Returns the interior gap, measured as a percentage of the available drawing space.
`java.awt.Paint` `getLabelBackgroundPaint()` Returns the section label background paint.
`java.awt.Font` `getLabelFont()` Returns the section label font.
`double` `getLabelGap()` Returns the gap between the edge of the pie and the labels, expressed as a percentage of the plot width.
`PieSectionLabelGenerator` `getLabelGenerator()` Returns the section label generator.
`double` `getLabelLinkMargin()` Returns the margin (expressed as a percentage of the width or height) between the edge of the pie and the link point.
`java.awt.Paint` `getLabelLinkPaint()` Returns the paint used for the lines that connect pie sections to their corresponding labels.
`java.awt.Stroke` `getLabelLinkStroke()` Returns the stroke used for the label linking lines.
`java.awt.Paint` `getLabelOutlinePaint()` Returns the section label outline paint.
`java.awt.Stroke` `getLabelOutlineStroke()` Returns the section label outline stroke.
`java.awt.Paint` `getLabelPaint()` Returns the section label paint.
`java.awt.Paint` `getLabelShadowPaint()` Returns the section label shadow paint.
`LegendItemCollection` `getLegendItems()` Returns a collection of legend items for the pie chart.
`double` `getMaximumExplodePercent()` Returns the maximum explode percent.
`double` `getMaximumLabelWidth()` Returns the maximum label width as a percentage of the plot width.
`double` `getMinimumArcAngleToDraw()` Returns the minimum arc angle that will be drawn.
`int` `getPieIndex()` Returns the pie index (this is used by the `MultiplePiePlot` class to track subplots).
`java.lang.String` `getPlotType()` Returns a short string describing the type of plot.
`java.awt.Paint` `getSectionOutlinePaint()` Returns the outline paint for ALL sections in the plot.
`java.awt.Paint` `getSectionOutlinePaint(int section)` Returns the paint for the specified section.
`java.awt.Stroke` `getSectionOutlineStroke()` Returns the outline stroke for ALL sections in the plot.
`java.awt.Stroke` `getSectionOutlineStroke(int section)` Returns the stroke for the specified section.
`java.awt.Paint` `getSectionPaint()` Returns the paint for ALL sections in the plot.
`java.awt.Paint` `getSectionPaint(int section)` Returns the paint for the specified section.
`java.awt.Paint` `getShadowPaint()` Returns the shadow paint.
`double` `getShadowXOffset()` Returns the x-offset for the shadow effect.
`double` `getShadowYOffset()` Returns the y-offset for the shadow effect.
`double` `getStartAngle()` Returns the start angle for the first pie section.
`PieToolTipGenerator` `getToolTipGenerator()` Returns the tool tip generator, an object that is responsible for generating the text items used for tool tips by the plot.
`PieURLGenerator` `getURLGenerator()` Returns the URL generator.
`PiePlotState` `initialise(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea, PiePlot plot, java.lang.Integer index, PlotRenderingInfo info)` Initialises the drawing procedure.
`boolean` `isCircular()` Returns a flag indicating whether the pie chart is circular, or stretched into an elliptical shape.
`void` `setBaseSectionOutlinePaint(java.awt.Paint paint)` Sets the base section paint.
`void` `setBaseSectionOutlineStroke(java.awt.Stroke stroke)` Sets the base section stroke.
`void` `setBaseSectionPaint(java.awt.Paint paint)` Sets the base section paint.
`void` `setCircular(boolean flag)` A flag indicating whether the pie chart is circular, or stretched into an elliptical shape.
`void` `setCircular(boolean circular, boolean notify)` Sets the circular attribute and, if requested, sends a `PlotChangeEvent` to all registered listeners.
`void` `setDataset(PieDataset dataset)` Sets the dataset and sends a `DatasetChangeEvent` to 'this'.
`void` `setDirection(org.jfree.util.Rotation direction)` Sets the direction in which the pie sections are drawn and sends a `PlotChangeEvent` to all registered listeners.
`void` `setExplodePercent(int section, double percent)` Sets the amount that a pie section should be exploded and sends a `PlotChangeEvent` to all registered listeners.
`void` `setIgnoreNullValues(boolean flag)` Sets a flag that controls whether `null` values are ignored, and sends a `PlotChangeEvent` to all registered listeners.
`void` `setInteriorGap(double percent)` Sets the interior gap and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelBackgroundPaint(java.awt.Paint paint)` Sets the section label background paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelFont(java.awt.Font font)` Sets the section label font and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelGap(double gap)` Sets the gap between the edge of the pie and the labels (expressed as a percentage of the plot width) and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelGenerator(PieSectionLabelGenerator generator)` Sets the section label generator and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelLinkMargin(double margin)` Sets the link margin and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelLinkPaint(java.awt.Paint paint)` Sets the paint used for the lines that connect pie sections to their corresponding labels, and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelLinkStroke(java.awt.Stroke stroke)` Sets the link stroke and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelOutlinePaint(java.awt.Paint paint)` Sets the section label outline paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelOutlineStroke(java.awt.Stroke stroke)` Sets the section label outline stroke and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelPaint(java.awt.Paint paint)` Sets the section label paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setLabelShadowPaint(java.awt.Paint paint)` Sets the section label shadow paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setMaximumLabelWidth(double width)` Sets the maximum label width as a percentage of the plot width and sends a `PlotChangeEvent` to all registered listeners.
`void` `setMinimumArcAngleToDraw(double angle)` Sets the minimum arc angle that will be drawn.
`void` `setPieIndex(int index)` Sets the pie index (this is used by the `MultiplePiePlot` class to track subplots).
`void` `setSectionOutlinePaint(int section, java.awt.Paint paint)` Sets the paint used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.
`void` `setSectionOutlinePaint(java.awt.Paint paint)` Sets the outline paint for ALL sections in the plot.
`void` `setSectionOutlineStroke(int section, java.awt.Stroke stroke)` Sets the stroke used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.
`void` `setSectionOutlineStroke(java.awt.Stroke stroke)` Sets the outline stroke for ALL sections in the plot.
`void` `setSectionPaint(int section, java.awt.Paint paint)` Sets the paint used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.
`void` `setSectionPaint(java.awt.Paint paint)` Sets the paint for ALL sections in the plot.
`void` `setShadowPaint(java.awt.Paint paint)` Sets the shadow paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setShadowXOffset(double offset)` Sets the x-offset for the shadow effect and sends a `PlotChangeEvent` to all registered listeners.
`void` `setShadowYOffset(double offset)` Sets the y-offset for the shadow effect and sends a `PlotChangeEvent` to all registered listeners.
`void` `setStartAngle(double angle)` Sets the starting angle and sends a `PlotChangeEvent` to all registered listeners.
`void` `setToolTipGenerator(PieToolTipGenerator generator)` Sets the tool tip generator and sends a `PlotChangeEvent` to all registered listeners.
`void` `setURLGenerator(PieURLGenerator generator)` Sets the URL generator and sends a `PlotChangeEvent` to all registered listeners.
`void` `zoom(double percent)` A zoom method that does nothing.

Methods inherited from class org.jfree.chart.plot.Plot

`addChangeListener, axisChanged, datasetChanged, draw, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, fillBackground, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundPaint, getDataAreaRatio, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getRectX, getRectY, getRootPlot, handleClick, isSubplot, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundPaint, setDataAreaRatio, setDatasetGroup, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setOutlinePaint, setOutlineStroke, setParent`

Methods inherited from class java.lang.Object
`finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_INTERIOR_GAP

    public static final double DEFAULT_INTERIOR_GAP

  The default interior gap.

  See Also:
    Constant Field Values

### MAX_INTERIOR_GAP

    public static final double MAX_INTERIOR_GAP

  The maximum interior gap (currently 40%).

  See Also:
    Constant Field Values

### DEFAULT_START_ANGLE

    public static final double DEFAULT_START_ANGLE

  The default starting angle for the pie chart.

  See Also:
    Constant Field Values

### DEFAULT_LABEL_FONT

    public static final java.awt.Font DEFAULT_LABEL_FONT

  The default section label font.

### DEFAULT_LABEL_PAINT

    public static final java.awt.Paint DEFAULT_LABEL_PAINT

  The default section label paint.

### DEFAULT_LABEL_BACKGROUND_PAINT

    public static final java.awt.Paint DEFAULT_LABEL_BACKGROUND_PAINT

  The default section label background paint.

### DEFAULT_LABEL_OUTLINE_PAINT

    public static final java.awt.Paint DEFAULT_LABEL_OUTLINE_PAINT

  The default section label outline paint.

### DEFAULT_LABEL_OUTLINE_STROKE

    public static final java.awt.Stroke DEFAULT_LABEL_OUTLINE_STROKE

  The default section label outline stroke.

### DEFAULT_LABEL_SHADOW_PAINT

    public static final java.awt.Paint DEFAULT_LABEL_SHADOW_PAINT

  The default section label shadow paint.

### DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW

    public static final double DEFAULT_MINIMUM_ARC_ANGLE_TO_DRAW

  The default minimum arc angle to draw.

  See Also:
    Constant Field Values

### localizationResources

    protected static java.util.ResourceBundle localizationResources

  The resourceBundle for the localization.

Constructor Detail

### PiePlot

    public PiePlot()

  Creates a new plot. The dataset is initially set to `null`.

### PiePlot

    public PiePlot(PieDataset dataset)

  Creates a plot that will draw a pie chart for the specified dataset.

Parameters:
  `dataset` - the dataset (`null` permitted).

Method Detail

### getDataset

    public PieDataset getDataset()

  Returns the dataset.

  Returns:
    The dataset (possibly `null`).

### setDataset

    public void setDataset(PieDataset dataset)

  Sets the dataset and sends a `DatasetChangeEvent` to 'this'.

  Parameters:
    `dataset` - the dataset (`null` permitted).

### getPieIndex

    public int getPieIndex()

  Returns the pie index (this is used by the `MultiplePiePlot` class to track subplots).

  Returns:
    the pie index.

### setPieIndex

    public void setPieIndex(int index)

  Sets the pie index (this is used by the `MultiplePiePlot` class to track subplots).

  Parameters:
    `index` - the index.

### getStartAngle

    public double getStartAngle()

  Returns the start angle for the first pie section.

  This is measured in degrees starting from 3 o'clock and measuring anti-clockwise.

  Returns:
    the start angle.

### setStartAngle

    public void setStartAngle(double angle)

  Sets the starting angle and sends a `PlotChangeEvent` to all registered listeners.

  The initial default value is 90 degrees, which corresponds to 12 o'clock. A value of zero corresponds to 3 o'clock... this is the encoding used by Java's Arc2D class.

  Parameters:
    `angle` - the angle (in degrees).

### getDirection

    public org.jfree.util.Rotation getDirection()

  Returns the direction in which the pie sections are drawn (clockwise or anti-clockwise).

  Returns:
    the direction (never `null`).

### setDirection

    public void setDirection(org.jfree.util.Rotation direction)

  Sets the direction in which the pie sections are drawn and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `direction` - the direction (`null` not permitted).

### getInteriorGap

    public double getInteriorGap()

  Returns the interior gap, measured as a percentage of the available drawing space.

  Returns:
    the gap (as a percentage of the available drawing space).

### setInteriorGap

    public void setInteriorGap(double percent)

  Sets the interior gap and sends a `PlotChangeEvent` to all registered listeners. This controls the space between the edges of the pie plot and the plot area itself (the region where the section labels appear).

  Parameters:
    `percent` - the gap (as a percentage of the available drawing space).

### isCircular

    public boolean isCircular()

  Returns a flag indicating whether the pie chart is circular, or stretched into an elliptical shape.

  Returns:
    a flag indicating whether the pie chart is circular.

### setCircular

    public void setCircular(boolean flag)

  A flag indicating whether the pie chart is circular, or stretched into an elliptical shape.

  Parameters:
    `flag` - the new value.

### setCircular

    public void setCircular(boolean circular,
                            boolean notify)

  Sets the circular attribute and, if requested, sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `circular` - the new value of the flag.
    `notify` - notify listeners?

### getSectionPaint

    public java.awt.Paint getSectionPaint()

  Returns the paint for ALL sections in the plot.

  Returns:
    the paint (possibly `null`).

### setSectionPaint

    public void setSectionPaint(java.awt.Paint paint)

  Sets the paint for ALL sections in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each section).

  Parameters:
    `paint` - the paint (`null` permitted).

### getSectionPaint

    public java.awt.Paint getSectionPaint(int section)

  Returns the paint for the specified section.

  Parameters:
    `section` - the section index (zero-based).
  Returns:
    the paint (never `null`).

### setSectionPaint

    public void setSectionPaint(int section,
                                java.awt.Paint paint)

  Sets the paint used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `section` - the section index (zero-based).
    `paint` - the paint (`null` permitted).

### getBaseSectionPaint

    public java.awt.Paint getBaseSectionPaint()

  Returns the base section paint. This is used when no other paint is available.

  Returns:
    the paint (never `null`).

### setBaseSectionPaint

    public void setBaseSectionPaint(java.awt.Paint paint)

  Sets the base section paint.

  Parameters:
    `paint` - the paint (`null` not permitted).

### getSectionOutlinePaint

    public java.awt.Paint getSectionOutlinePaint()

  Returns the outline paint for ALL sections in the plot.

  Returns:
    the paint (possibly `null`).

### setSectionOutlinePaint

    public void setSectionOutlinePaint(java.awt.Paint paint)

  Sets the outline paint for ALL sections in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each section).

  Parameters:
    `paint` - the paint (`null` permitted).

### getSectionOutlinePaint

    public java.awt.Paint getSectionOutlinePaint(int section)

  Returns the paint for the specified section.

  Parameters:
    `section` - the section index (zero-based).
  Returns:
    the paint (never `null`).

### setSectionOutlinePaint

    public void setSectionOutlinePaint(int section,
                                       java.awt.Paint paint)

  Sets the paint used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `section` - the section index (zero-based).
    `paint` - the paint (`null` permitted).

### getBaseSectionOutlinePaint

    public java.awt.Paint getBaseSectionOutlinePaint()

  Returns the base section paint. This is used when no other paint is available.

  Returns:
    the paint (never `null`).

### setBaseSectionOutlinePaint

    public void setBaseSectionOutlinePaint(java.awt.Paint paint)

  Sets the base section paint.

  Parameters:
    `paint` - the paint (`null` not permitted).

### getSectionOutlineStroke

    public java.awt.Stroke getSectionOutlineStroke()

  Returns the outline stroke for ALL sections in the plot.

  Returns:
    the stroke (possibly `null`).

### setSectionOutlineStroke

    public void setSectionOutlineStroke(java.awt.Stroke stroke)

  Sets the outline stroke for ALL sections in the plot. If this is set to null, then a list of paints is used instead (to allow different colors to be used for each section).

  Parameters:
    `stroke` - the stroke (`null` permitted).

### getSectionOutlineStroke

    public java.awt.Stroke getSectionOutlineStroke(int section)

  Returns the stroke for the specified section.

  Parameters:
    `section` - the section index (zero-based).
  Returns:
    the stroke (never `null`).

### setSectionOutlineStroke

    public void setSectionOutlineStroke(int section,
                                        java.awt.Stroke stroke)

  Sets the stroke used to fill a section of the pie and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `section` - the section index (zero-based).
    `stroke` - the stroke (`null` permitted).

### getBaseSectionOutlineStroke

    public java.awt.Stroke getBaseSectionOutlineStroke()

  Returns the base section stroke. This is used when no other stroke is available.

  Returns:
    the stroke (never `null`).

### setBaseSectionOutlineStroke

    public void setBaseSectionOutlineStroke(java.awt.Stroke stroke)

  Sets the base section stroke.

  Parameters:
    `stroke` - the stroke (`null` not permitted).

### getShadowPaint

    public java.awt.Paint getShadowPaint()

  Returns the shadow paint.

  Returns:
    the paint (possibly `null`).

### setShadowPaint

    public void setShadowPaint(java.awt.Paint paint)

  Sets the shadow paint and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` permitted).

### getShadowXOffset

    public double getShadowXOffset()

  Returns the x-offset for the shadow effect.

  Returns:
    the offset (in Java2D units).

### setShadowXOffset

    public void setShadowXOffset(double offset)

  Sets the x-offset for the shadow effect and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `offset` - the offset (in Java2D units).

### getShadowYOffset

    public double getShadowYOffset()

  Returns the y-offset for the shadow effect.

  Returns:
    the offset (in Java2D units).

### setShadowYOffset

    public void setShadowYOffset(double offset)

  Sets the y-offset for the shadow effect and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `offset` - the offset (in Java2D units).

### getExplodePercent

    public double getExplodePercent(int section)

  Returns the amount that a section should be 'exploded'.

  Parameters:
    `section` - the section number.
  Returns:
    the amount that a section should be 'exploded'.

### setExplodePercent

    public void setExplodePercent(int section,
                                  double percent)

  Sets the amount that a pie section should be exploded and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `section` - the section index.
    `percent` - the explode percentage (0.30 = 30 percent).

### getMaximumExplodePercent

    public double getMaximumExplodePercent()

  Returns the maximum explode percent.

  Returns:
    the percent.

### getLabelGenerator

    public PieSectionLabelGenerator getLabelGenerator()

  Returns the section label generator.

  Returns:
    the generator (possibly `null`).

### setLabelGenerator

    public void setLabelGenerator(PieSectionLabelGenerator generator)

  Sets the section label generator and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `generator` - the generator (`null` permitted).

### getLabelGap

    public double getLabelGap()

  Returns the gap between the edge of the pie and the labels, expressed as a percentage of the plot width.

  Returns:
    the gap (a percentage, where 0.05 = five percent).

### setLabelGap

    public void setLabelGap(double gap)

  Sets the gap between the edge of the pie and the labels (expressed as a percentage of the plot width) and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `gap` - the gap (a percentage, where 0.05 = five percent).

### getMaximumLabelWidth

    public double getMaximumLabelWidth()

  Returns the maximum label width as a percentage of the plot width.

  Returns:
    the width (a percentage, where 0.20 = 20 percent).

### setMaximumLabelWidth

    public void setMaximumLabelWidth(double width)

  Sets the maximum label width as a percentage of the plot width and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `width` - the width (a percentage, where 0.20 = 20 percent).

### getLabelLinkMargin

    public double getLabelLinkMargin()

  Returns the margin (expressed as a percentage of the width or height) between the edge of the pie and the link point.

  Returns:
    The link margin (as a percentage, where 0.05 is five percent).

### setLabelLinkMargin

    public void setLabelLinkMargin(double margin)

  Sets the link margin and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `margin` - the margin.

### getLabelLinkPaint

    public java.awt.Paint getLabelLinkPaint()

  Returns the paint used for the lines that connect pie sections to their corresponding labels.

  Returns:
    The paint (never `null`).

### setLabelLinkPaint

    public void setLabelLinkPaint(java.awt.Paint paint)

  Sets the paint used for the lines that connect pie sections to their corresponding labels, and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` not permitted).

### getLabelLinkStroke

    public java.awt.Stroke getLabelLinkStroke()

  Returns the stroke used for the label linking lines.

  Returns:
    the stroke.

### setLabelLinkStroke

    public void setLabelLinkStroke(java.awt.Stroke stroke)

  Sets the link stroke and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `stroke` - the stroke.

### getLabelFont

    public java.awt.Font getLabelFont()

  Returns the section label font.

  Returns:
    the font (never `null`).

### setLabelFont

    public void setLabelFont(java.awt.Font font)

  Sets the section label font and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `font` - the font (`null` not permitted).

### getLabelPaint

    public java.awt.Paint getLabelPaint()

  Returns the section label paint.

  Returns:
    the paint (never `null`).

### setLabelPaint

    public void setLabelPaint(java.awt.Paint paint)

  Sets the section label paint and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` not permitted).

### getLabelBackgroundPaint

    public java.awt.Paint getLabelBackgroundPaint()

  Returns the section label background paint.

  Returns:
    The paint (possibly `null`).

### setLabelBackgroundPaint

    public void setLabelBackgroundPaint(java.awt.Paint paint)

  Sets the section label background paint and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` permitted).

### getLabelOutlinePaint

    public java.awt.Paint getLabelOutlinePaint()

  Returns the section label outline paint.

  Returns:
    The paint (possibly `null`).

### setLabelOutlinePaint

    public void setLabelOutlinePaint(java.awt.Paint paint)

  Sets the section label outline paint and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` permitted).

### getLabelOutlineStroke

    public java.awt.Stroke getLabelOutlineStroke()

  Returns the section label outline stroke.

  Returns:
    The stroke (possibly `null`).

### setLabelOutlineStroke

    public void setLabelOutlineStroke(java.awt.Stroke stroke)

  Sets the section label outline stroke and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `stroke` - the stroke (`null` permitted).

### getLabelShadowPaint

    public java.awt.Paint getLabelShadowPaint()

  Returns the section label shadow paint.

  Returns:
    The paint (possibly `null`).

### setLabelShadowPaint

    public void setLabelShadowPaint(java.awt.Paint paint)

  Sets the section label shadow paint and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the paint (`null` permitted).

### getToolTipGenerator

    public PieToolTipGenerator getToolTipGenerator()

  Returns the tool tip generator, an object that is responsible for generating the text items used for tool tips by the plot. If the generator is `null`, no tool tips will be created.

  Returns:
    The generator (possibly `null`).

### setToolTipGenerator

    public void setToolTipGenerator(PieToolTipGenerator generator)

  Sets the tool tip generator and sends a `PlotChangeEvent` to all registered listeners. Set the generator to `null` if you don't want any tool tips.

  Parameters:
    `generator` - the generator (`null` permitted).

### getURLGenerator

    public PieURLGenerator getURLGenerator()

  Returns the URL generator.

  Returns:
    the generator (possibly `null`).

### setURLGenerator

    public void setURLGenerator(PieURLGenerator generator)

  Sets the URL generator and sends a `PlotChangeEvent` to all registered listeners.

  Parameters:
    `generator` - the generator (`null` permitted).

### getMinimumArcAngleToDraw

    public double getMinimumArcAngleToDraw()

  Returns the minimum arc angle that will be drawn. Pie sections for an angle smaller than this are not drawn, to avoid a JDK bug.

  Returns:
    The minimum angle.

### setMinimumArcAngleToDraw

    public void setMinimumArcAngleToDraw(double angle)

  Sets the minimum arc angle that will be drawn. Pie sections for an angle smaller than this are not drawn, to avoid a JDK bug. See this link for details: http://www.jfree.org/phpBB2/viewtopic.php?t=2707 ...and this bug report in the Java Bug Parade: http://developer.java.sun.com/developer/bugParade/bugs/4836495.html

  Parameters:
    `angle` - the minimum angle.

### getIgnoreNullValues

    public boolean getIgnoreNullValues()

  Returns the flag that controls whether `null` values in the dataset are ignored.

  Returns:
    A boolean.

### setIgnoreNullValues

    public void setIgnoreNullValues(boolean flag)

  Sets a flag that controls whether `null` values are ignored, and sends a `PlotChangeEvent` to all registered listeners. At present, this only affects whether or not the key is presented in the legend.

  Parameters:
    `flag` - the flag.

### initialise

    public PiePlotState initialise(java.awt.Graphics2D g2,
                                   java.awt.geom.Rectangle2D plotArea,
                                   PiePlot plot,
                                   java.lang.Integer index,
                                   PlotRenderingInfo info)

  Initialises the drawing procedure. This method will be called before the first item is rendered, giving the plot an opportunity to initialise any state information it wants to maintain.

  Parameters:
    `g2` - the graphics device.
    `plotArea` - the plot area (`null` not permitted).
    `plot` - the plot.
    `index` - the secondary index (`null` for primary renderer).
    `info` - collects chart rendering information for return to caller.
  Returns:
    A state object (maintains state information relevant to one chart drawing).

### draw

    public void draw(java.awt.Graphics2D g2,
                     java.awt.geom.Rectangle2D plotArea,
                     PlotState parentState,
                     PlotRenderingInfo info)

  Draws the plot on a Java 2D graphics device (such as the screen or a printer).

  Specified by:
    `draw` in class `Plot`
  Parameters:
    `g2` - the graphics device.
    `plotArea` - the area within which the plot should be drawn.
    `parentState` - the state from the parent plot, if there is one.
    `info` - collects info about the drawing (`null` permitted).

### drawPie

    protected void drawPie(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D plotArea,
                           PlotRenderingInfo info)

  Draws the pie.

  Parameters:
    `g2` - the graphics device.
    `plotArea` - the plot area.
    `info` - chart rendering info.

### drawItem

    protected void drawItem(java.awt.Graphics2D g2,
                            int section,
                            java.awt.geom.Rectangle2D dataArea,
                            PiePlotState state,
                            int currentPass)

  Draws a single data item.

  Parameters:
    `g2` - the graphics device (`null` not permitted).
    `section` - the section index.
    `dataArea` - the data plot area.
    `state` - state information for one chart.
    `currentPass` - the current pass index.

### drawLabels

    protected void drawLabels(java.awt.Graphics2D g2,
                              java.util.List keys,
                              double totalValue,
                              java.awt.geom.Rectangle2D plotArea,
                              java.awt.geom.Rectangle2D linkArea,
                              PiePlotState state)

  Draws the labels for the pie sections.

  Parameters:
    `g2` - the graphics device.
    `keys` - the keys.
    `totalValue` - the total value.
    `plotArea` - the plot area.
    `linkArea` - the link area.
    `state` - the state.

### drawLeftLabels

    protected void drawLeftLabels(KeyedValues leftKeys,
                                  java.awt.Graphics2D g2,
                                  java.awt.geom.Rectangle2D plotArea,
                                  java.awt.geom.Rectangle2D linkArea,
                                  float maxLabelWidth,
                                  PiePlotState state)

  Draws the left labels.

  Parameters:
    `leftKeys` - the keys.
    `g2` - the graphics device.
    `plotArea` - the plot area.
    `linkArea` - the link area.
    `maxLabelWidth` - the maximum label width.
    `state` - the state.

### drawRightLabels

    protected void drawRightLabels(KeyedValues keys,
                                   java.awt.Graphics2D g2,
                                   java.awt.geom.Rectangle2D plotArea,
                                   java.awt.geom.Rectangle2D linkArea,
                                   float maxLabelWidth,
                                   PiePlotState state)

  Draws the right labels.

  Parameters:
    `keys` - the keys.
    `g2` - the graphics device.
    `plotArea` - the plot area.
    `linkArea` - the link area.
    `maxLabelWidth` - the maximum label width.
    `state` - the state.

### getLegendItems

    public LegendItemCollection getLegendItems()

  Returns a collection of legend items for the pie chart.

  Overrides:
    `getLegendItems` in class `Plot`
  Returns:
    The legend items (never `null`).

### getPlotType

    public java.lang.String getPlotType()

  Returns a short string describing the type of plot.

  Specified by:
    `getPlotType` in class `Plot`
  Returns:
    the plot type.

### zoom

    public void zoom(double percent)

  A zoom method that does nothing.

  Plots are required to support the zoom operation. In the case of a pie chart, it doesn't make sense to zoom in or out, so the method is empty.

  Overrides:
    `zoom` in class `Plot`
  Parameters:
    `percent` - the zoom percentage.

### getArcBounds

    protected java.awt.geom.Rectangle2D getArcBounds(java.awt.geom.Rectangle2D unexploded,
                                                     java.awt.geom.Rectangle2D exploded,
                                                     double angle,
                                                     double extent,
                                                     double explodePercent)

  Returns a rectangle that can be used to create a pie section (taking into account the amount by which the pie section is 'exploded').

  Parameters:
    `unexploded` - the area inside which the unexploded pie sections are drawn.
    `exploded` - the area inside which the exploded pie sections are drawn.
    `angle` - the start angle.
    `extent` - the extent of the arc.
    `explodePercent` - the amount by which the pie section is exploded.
  Returns:
    a rectangle that can be used to create a pie section.

### drawLeftLabel

    protected void drawLeftLabel(java.awt.Graphics2D g2,
                                 PiePlotState state,
                                 PieLabelRecord record)

  Draws a section label on the left side of the pie chart.

  Parameters:
    `g2` - the graphics device.
    `state` - the state.
    `record` - the label record.

### drawRightLabel

    protected void drawRightLabel(java.awt.Graphics2D g2,
                                  PiePlotState state,
                                  PieLabelRecord record)

  Draws a section label on the right side of the pie chart.

  Parameters:
    `g2` - the graphics device.
    `state` - the state.
    `record` - the label record.

### equals

    public boolean equals(java.lang.Object obj)

  Tests this plot for equality with an arbitrary object. Note that the plot's dataset is NOT included in the test for equality.

  Overrides:
    `equals` in class `Plot`
  Parameters:
    `obj` - the object to test against (`null` permitted).
  Returns:
    `true` or `false`.

### clone

    public java.lang.Object clone()
                           throws java.lang.CloneNotSupportedException

  Returns a clone of the plot.

  Overrides:
    `clone` in class `Plot`
  Returns:
    A clone.
  Throws:
    `java.lang.CloneNotSupportedException` - if some component of the plot does not support cloning.