Class PiePlot

    • 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

      • 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.
        See Also:
        setStartAngle(double)
      • 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).
        See Also:
        getStartAngle()
      • 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).
        See Also:
        setDirection(Rotation)
      • 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).
        See Also:
        getDirection()
      • 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).
        See Also:
        setInteriorGap(double)
      • 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).
        See Also:
        getInteriorGap()
      • 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.
        See Also:
        setCircular(boolean)
      • 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.
        See Also:
        isCircular()
      • 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?
        See Also:
        isCircular()
      • lookupSectionPaint

        protected java.awt.Paint lookupSectionPaint​(java.lang.Comparable key)
        Returns the paint for the specified section. This is equivalent to lookupSectionPaint(section, getAutoPopulateSectionPaint()).
        Parameters:
        key - the section key.
        Returns:
        The paint for the specified section.
        Since:
        1.0.3
        See Also:
        lookupSectionPaint(Comparable, boolean)
      • lookupSectionPaint

        protected java.awt.Paint lookupSectionPaint​(java.lang.Comparable key,
                                                    boolean autoPopulate)
        Returns the paint for the specified section. The lookup involves these steps:
        Parameters:
        key - the section key.
        autoPopulate - a flag that controls whether the drawing supplier is used to auto-populate the section paint settings.
        Returns:
        The paint.
        Since:
        1.0.3
      • getSectionKey

        protected java.lang.Comparable getSectionKey​(int section)
        Returns a key for the specified section. If there is no such section in the dataset, we generate a key. This is to provide some backward compatibility for the (now deprecated) methods that get/set attributes based on section indices. The preferred way of doing this now is to link the attributes directly to the section key (there are new methods for this, starting from version 1.0.3).
        Parameters:
        section - the section index.
        Returns:
        The key.
        Since:
        1.0.3
      • getSectionPaint

        public java.awt.Paint getSectionPaint​(java.lang.Comparable key)
        Returns the paint associated with the specified key, or null if there is no paint associated with the key.
        Parameters:
        key - the key (null not permitted).
        Returns:
        The paint associated with the specified key, or null.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        setSectionPaint(Comparable, Paint)
      • setSectionPaint

        public void setSectionPaint​(java.lang.Comparable key,
                                    java.awt.Paint paint)
        Sets the paint associated with the specified key, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        key - the key (null not permitted).
        paint - the paint.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        getSectionPaint(Comparable)
      • clearSectionPaints

        public void clearSectionPaints​(boolean notify)
        Clears the section paint settings for this plot and, if requested, sends a PlotChangeEvent to all registered listeners. Be aware that if the autoPopulateSectionPaint flag is set, the section paints may be repopulated using the same colours as before.
        Parameters:
        notify - notify listeners?
        Since:
        1.0.11
        See Also:
        autoPopulateSectionPaint
      • getBaseSectionPaint

        public java.awt.Paint getBaseSectionPaint()
        Returns the base section paint. This is used when no other paint is defined, which is rare. The default value is Color.gray.
        Returns:
        The paint (never null).
        See Also:
        setBaseSectionPaint(Paint)
      • getSectionOutlinesVisible

        public boolean getSectionOutlinesVisible()
        Returns the flag that controls whether or not the outline is drawn for each pie section.
        Returns:
        The flag that controls whether or not the outline is drawn for each pie section.
        See Also:
        setSectionOutlinesVisible(boolean)
      • lookupSectionOutlinePaint

        protected java.awt.Paint lookupSectionOutlinePaint​(java.lang.Comparable key)
        Returns the outline paint for the specified section. This is equivalent to lookupSectionPaint(section, getAutoPopulateSectionOutlinePaint()).
        Parameters:
        key - the section key.
        Returns:
        The paint for the specified section.
        Since:
        1.0.3
        See Also:
        lookupSectionOutlinePaint(Comparable, boolean)
      • getSectionOutlinePaint

        public java.awt.Paint getSectionOutlinePaint​(java.lang.Comparable key)
        Returns the outline paint associated with the specified key, or null if there is no paint associated with the key.
        Parameters:
        key - the key (null not permitted).
        Returns:
        The paint associated with the specified key, or null.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        setSectionOutlinePaint(Comparable, Paint)
      • setSectionOutlinePaint

        public void setSectionOutlinePaint​(java.lang.Comparable key,
                                           java.awt.Paint paint)
        Sets the outline paint associated with the specified key, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        key - the key (null not permitted).
        paint - the paint.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        getSectionOutlinePaint(Comparable)
      • clearSectionOutlinePaints

        public void clearSectionOutlinePaints​(boolean notify)
        Clears the section outline paint settings for this plot and, if requested, sends a PlotChangeEvent to all registered listeners. Be aware that if the autoPopulateSectionPaint flag is set, the section paints may be repopulated using the same colours as before.
        Parameters:
        notify - notify listeners?
        Since:
        1.0.11
        See Also:
        autoPopulateSectionOutlinePaint
      • lookupSectionOutlineStroke

        protected java.awt.Stroke lookupSectionOutlineStroke​(java.lang.Comparable key)
        Returns the outline stroke for the specified section. This is equivalent to lookupSectionOutlineStroke(section, getAutoPopulateSectionOutlineStroke()).
        Parameters:
        key - the section key.
        Returns:
        The stroke for the specified section.
        Since:
        1.0.3
        See Also:
        lookupSectionOutlineStroke(Comparable, boolean)
      • getSectionOutlineStroke

        public java.awt.Stroke getSectionOutlineStroke​(java.lang.Comparable key)
        Returns the outline stroke associated with the specified key, or null if there is no stroke associated with the key.
        Parameters:
        key - the key (null not permitted).
        Returns:
        The stroke associated with the specified key, or null.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        setSectionOutlineStroke(Comparable, Stroke)
      • setSectionOutlineStroke

        public void setSectionOutlineStroke​(java.lang.Comparable key,
                                            java.awt.Stroke stroke)
        Sets the outline stroke associated with the specified key, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        key - the key (null not permitted).
        stroke - the stroke.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        getSectionOutlineStroke(Comparable)
      • clearSectionOutlineStrokes

        public void clearSectionOutlineStrokes​(boolean notify)
        Clears the section outline stroke settings for this plot and, if requested, sends a PlotChangeEvent to all registered listeners. Be aware that if the autoPopulateSectionPaint flag is set, the section paints may be repopulated using the same colours as before.
        Parameters:
        notify - notify listeners?
        Since:
        1.0.11
        See Also:
        autoPopulateSectionOutlineStroke
      • 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).
        See Also:
        getShadowPaint()
      • 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).
        See Also:
        getShadowXOffset()
      • 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).
        See Also:
        getShadowYOffset()
      • getExplodePercent

        public double getExplodePercent​(java.lang.Comparable key)
        Returns the amount that the section with the specified key should be exploded.
        Parameters:
        key - the key (null not permitted).
        Returns:
        The amount that the section with the specified key should be exploded.
        Throws:
        java.lang.IllegalArgumentException - if key is null.
        Since:
        1.0.3
        See Also:
        setExplodePercent(Comparable, double)
      • setExplodePercent

        public void setExplodePercent​(java.lang.Comparable key,
                                      double percent)
        Sets the amount that a pie section should be exploded and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        key - the section key (null not permitted).
        percent - the explode percentage (0.30 = 30 percent).
        Since:
        1.0.3
        See Also:
        getExplodePercent(Comparable)
      • getMaximumExplodePercent

        public double getMaximumExplodePercent()
        Returns the maximum explode percent.
        Returns:
        The percent.
      • 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).
        See Also:
        setLabelGap(double)
      • 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).
        See Also:
        getLabelGap()
      • 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).
        See Also:
        getMaximumLabelWidth()
      • setLabelLinksVisible

        public void setLabelLinksVisible​(boolean visible)
        Sets the flag that controls whether or not label linking lines are visible and sends a PlotChangeEvent to all registered listeners. Please take care when hiding the linking lines - depending on the data values, the labels can be displayed some distance away from the corresponding pie section.
        Parameters:
        visible - the flag.
        See Also:
        getLabelLinksVisible()
      • 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).
        See Also:
        setLabelLinkMargin(double)
      • 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).
        See Also:
        setLabelLinkPaint(Paint)
      • 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).
        See Also:
        getLabelLinkPaint()
      • getLabelLinkDepth

        protected double getLabelLinkDepth()
        Returns the distance that the end of the label link is embedded into the plot, expressed as a percentage of the plot's radius.

        This method is overridden in the RingPlot class to resolve bug 2121818.
        Returns:
        0.10.
        Since:
        1.0.12
      • 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).
        See Also:
        getLabelFont()
      • 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).
        See Also:
        getLabelPaint()
      • setLabelPadding

        public void setLabelPadding​(org.jfree.ui.RectangleInsets padding)
        Sets the padding between each label and its outline and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        padding - the padding (null not permitted).
        Since:
        1.0.7
        See Also:
        getLabelPadding()
      • getSimpleLabels

        public boolean getSimpleLabels()
        Returns the flag that controls whether simple or extended labels are displayed on the plot.
        Returns:
        A boolean.
        Since:
        1.0.7
      • setSimpleLabels

        public void setSimpleLabels​(boolean simple)
        Sets the flag that controls whether simple or extended labels are displayed on the plot, and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        simple - the new flag value.
        Since:
        1.0.7
      • setSimpleLabelOffset

        public void setSimpleLabelOffset​(org.jfree.ui.RectangleInsets offset)
        Sets the offset for the simple labels and sends a PlotChangeEvent to all registered listeners.
        Parameters:
        offset - the offset (null not permitted).
        Since:
        1.0.7
        See Also:
        getSimpleLabelOffset()
      • getShadowGenerator

        public ShadowGenerator getShadowGenerator()
        Returns the shadow generator for the plot, if any.
        Returns:
        The shadow generator (possibly null).
        Since:
        1.0.14
      • setShadowGenerator

        public void setShadowGenerator​(ShadowGenerator generator)
        Sets the shadow generator for the plot and sends a PlotChangeEvent to all registered listeners. Note that this is a bitmap drop-shadow generation facility and is separate from the vector based show option that is controlled via the setShadowPaint(java.awt.Paint) method.
        Parameters:
        generator - the generator (null permitted).
        Since:
        1.0.14
      • handleMouseWheelRotation

        public void handleMouseWheelRotation​(int rotateClicks)
        Handles a mouse wheel rotation (this method is intended for use by the MouseWheelHandler class).
        Parameters:
        rotateClicks - the number of rotate clicks on the the mouse wheel.
        Since:
        1.0.14
      • 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 area,
                         java.awt.geom.Point2D anchor,
                         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.
        area - the area within which the plot should be drawn.
        anchor - the anchor point (null permitted).
        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.
      • drawSimpleLabels

        protected void drawSimpleLabels​(java.awt.Graphics2D g2,
                                        java.util.List keys,
                                        double totalValue,
                                        java.awt.geom.Rectangle2D plotArea,
                                        java.awt.geom.Rectangle2D pieArea,
                                        PiePlotState state)
        Draws the pie section labels in the simple form.
        Parameters:
        g2 - the graphics device.
        keys - the section keys.
        totalValue - the total value for all sections in the pie.
        plotArea - the plot area.
        pieArea - the area containing the pie.
        state - the plot state.
        Since:
        1.0.7
      • 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 - a collection of keys and angles (to the middle of the section, in degrees) for the sections on the left side of the plot.
        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.
      • 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.
      • 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.
      • getArcCenter

        protected java.awt.geom.Point2D getArcCenter​(PiePlotState state,
                                                     java.lang.Comparable key)
        Returns the center for the specified section. Checks to see if the section is exploded and recalculates the new center if so.
        Parameters:
        state - PiePlotState
        key - section key.
        Returns:
        The center for the specified section.
        Since:
        1.0.14
      • lookupSectionPaint

        protected java.awt.Paint lookupSectionPaint​(java.lang.Comparable key,
                                                    PiePlotState state)
        Returns the paint for the specified section. This is equivalent to lookupSectionPaint(section). Checks to see if the user set the Paint to be of type RadialGradientPaint If so it adjusts the center and radius to match the Pie
        Parameters:
        key - the section key.
        state - PiePlotState.
        Returns:
        The paint for the specified section.
        Since:
        1.0.14
      • 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.
        Specified by:
        clone in interface org.jfree.util.PublicCloneable
        Overrides:
        clone in class Plot
        Returns:
        A clone.
        Throws:
        java.lang.CloneNotSupportedException - if some component of the plot does not support cloning.
      • getSectionPaint

        public java.awt.Paint getSectionPaint​(int section)
        Deprecated.
        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)
        Deprecated.
        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).
      • getSectionOutlinePaint

        public java.awt.Paint getSectionOutlinePaint​(int section)
        Deprecated.
        Returns the paint for the specified section.
        Parameters:
        section - the section index (zero-based).
        Returns:
        The paint (possibly null).
      • getExplodePercent

        public double getExplodePercent​(int section)
        Deprecated.
        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)
        Deprecated.
        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).