Class WPieChart


public class WPieChart
extends WAbstractChart
A pie chart.

A pie chart renders a single data series as segments of a circle, so that the area of each segment is proportional to the value in the data series.

To use a pie chart, you need to set a model using WAbstractChart#setModel(), and use setLabelsColumn() and setDataColumn() to specify the model column that contains the category labels and data.

The pie chart may be customized visually by enabling a 3D effect (setPerspectiveEnabled()), or by specifying the angle of the first segment. One or more segments may be exploded, which seperates the segment from the rest of the pie chart, using setExplode().

The segments may be labeled in various ways using setDisplayLabels().

CSS

Styling through CSS is not applicable.

Example of a pie chart

See Also:
WCartesianChart
  • Constructor Details

  • Method Details

    • setLabelsColumn

      public void setLabelsColumn​(int modelColumn)
      Sets the model column that holds the labels.

      The labels are used only when setDisplayLabels() is called with the LabelOption.TextLabel option.

      The default value is -1 (not defined).

      See Also:
      WAbstractChart.setModel(WAbstractItemModel model), setDisplayLabels(EnumSet options), setDataColumn(int modelColumn)
    • getLabelsColumn

      public int getLabelsColumn()
      Returns the model column used for the labels.

      See Also:
      setLabelsColumn(int modelColumn)
    • setDataColumn

      public void setDataColumn​(int modelColumn)
      Sets the model column that holds the data.

      The data column should contain data that can be converted to a number, but should not necessarily be of a number type, see also StringUtils.asNumber(Object).

      The default value is -1 (not defined).

      See Also:
      WAbstractChart.setModel(WAbstractItemModel model), setLabelsColumn(int modelColumn)
    • getDataColumn

      public int getDataColumn()
      Returns the model column used for the data.

      See Also:
      setDataColumn(int modelColumn)
    • setBrush

      public void setBrush​(int modelRow, WBrush brush)
      Customizes the brush used for a pie segment.

      By default, the brush is taken from the WAbstractChart.getPalette(). You can use this method to override the palette's brush for a particular modelRow.

      See Also:
      WAbstractChart.setPalette(WChartPalette palette)
    • getBrush

      public WBrush getBrush​(int modelRow)
      Returns the brush used for a pie segment.

      See Also:
      setBrush(int modelRow, WBrush brush)
    • setExplode

      public void setExplode​(int modelRow, double factor)
      Sets the explosion factor for a pie segment.

      Separates the segment corresponding to model row modelRow from the rest of the pie. The factor is a positive number that represents the distance from the center as a fraction of the pie radius. Thus, 0 corresponds to no separation, and 0.1 to a 10% separation, and 1 to a separation where the segment tip is on the outer perimeter of the pie.

      The default value is 0.

    • getExplode

      public double getExplode​(int modelRow)
      Returns the explosion factor for a segment.

      See Also:
      setExplode(int modelRow, double factor)
    • setPerspectiveEnabled

      public void setPerspectiveEnabled​(boolean enabled, double height)
      Enables a 3D perspective effect on the pie.

      A 3D perspective effect is added, which may be customized by specifying the simulated height of the pie. The height is defined as a fraction of the pie radius.

      The default value is false.

    • setPerspectiveEnabled

      public final void setPerspectiveEnabled​(boolean enabled)
      Enables a 3D perspective effect on the pie.

      Calls setPerspectiveEnabled(enabled, 1.0)

    • isPerspectiveEnabled

      public boolean isPerspectiveEnabled()
      Returns whether a 3D effect is enabled.

      See Also:
      setPerspectiveEnabled(boolean enabled, double height)
    • setShadowEnabled

      public void setShadowEnabled​(boolean enabled)
      Enables a shadow effect.

      A soft shadow effect is added.

      The default value is false.

    • isShadowEnabled

      public boolean isShadowEnabled()
      Returns whether a shadow effect is enabled.

      See Also:
      setShadowEnabled(boolean enabled)
    • setStartAngle

      public void setStartAngle​(double startAngle)
      Sets the angle of the first segment.

      The default value is 45 degrees.

    • getStartAngle

      public double getStartAngle()
      Returns the angle of the first segment.

      See Also:
      setStartAngle(double startAngle)
    • setAvoidLabelRendering

      public void setAvoidLabelRendering​(double avoidLabelRendering)
      Sets the percentage value to avoid rendering of label texts.

      The default value is 0 percent.

    • getAvoidLabelRendering

      public double getAvoidLabelRendering()
      Returns the percentage to avoid label rendering.

      See Also:
      setAvoidLabelRendering(double avoidLabelRendering)
    • setDisplayLabels

      public void setDisplayLabels​(java.util.EnumSet<LabelOption> options)
      Configures if and how labels should be displayed.

      The options must be the logical OR of a placement option (LabelOption.Inside or LabelOption.Outside) and LabelOption.TextLabel and/or LabelOption.TextPercentage. If both TextLabel and TextPercentage are specified, then these are combined as "<label>: <percentage>".

      The default value is LabelOption.NoLabels.

    • setDisplayLabels

      public final void setDisplayLabels​(LabelOption option, LabelOption... options)
      Configures if and how labels should be displayed.

      Calls setDisplayLabels(EnumSet.of(option, options))

    • getDisplayLabels

      public java.util.EnumSet<LabelOption> getDisplayLabels()
      Returns options set for displaying labels.

      See Also:
      setDisplayLabels(EnumSet options)
    • setLabelFormat

      public void setLabelFormat​(java.lang.CharSequence format)
      Sets the label format.

      Sets a format string which is used to format label (percentage) values.

      The format string must be a format string that is accepted by snprintf() and which formats one double.

      The default value is "%.3g%%".

      See Also:
      getLabelFormat()
    • getLabelFormat

      public WString getLabelFormat()
      Returns the label format string.

      See Also:
      setLabelFormat(CharSequence format)
    • createLegendItemWidget

      public WWidget createLegendItemWidget​(int index, java.util.EnumSet<LabelOption> options)
      Creates a widget which renders the a legend item.

      Depending on the passed LabelOption flags, the legend item widget, will contain a text (with or without the percentage) and/or a span with the segment's color.

    • createLegendItemWidget

      public final WWidget createLegendItemWidget​(int index, LabelOption option, LabelOption... options)
      Creates a widget which renders the a legend item.

      Returns createLegendItemWidget(index, EnumSet.of(option, options))

    • addDataPointArea

      public void addDataPointArea​(int row, int column, WAbstractArea area)
      Adds a data point area (used for displaying e.g. tooltips).

      You may want to specialize this is if you wish to modify (or delete) the area.

      Note: Currently, an area is only created if the ToolTipRole data at the data point is not empty.

    • createLabelWidget

      public WContainerWidget createLabelWidget​(WWidget textWidget, WPainter painter, WRectF rect, java.util.EnumSet<AlignmentFlag> alignmentFlags)
      createLabelWidget possition textWidget where the text would be rendered. Assuming that textWidget is added to a container with same dimensions as the WPieChart. This should be used in combinaltion with drawLabel().

      See Also:
      drawLabel(WPainter painter, WRectF rect, EnumSet alignmentFlags, CharSequence text, int row)
    • createLabelWidget

      public final WContainerWidget createLabelWidget​(WWidget textWidget, WPainter painter, WRectF rect, AlignmentFlag alignmentFlag, AlignmentFlag... alignmentFlags)
      createLabelWidget possition textWidget where the text would be rendered. Assuming that textWidget is added to a container with same dimensions as the WPieChart. This should be used in combinaltion with drawLabel().

      Returns createLabelWidget(textWidget, painter, rect, EnumSet.of(alignmentFlag, alignmentFlags))

    • paint

      public void paint​(WPainter painter, WRectF rectangle)
      Description copied from class: WAbstractChart
      Paint the chart in a rectangle of the given painter.

      Paints the chart inside the painter, in the area indicated by rectangle. When rectangle is a null rectangle, the entire painter WPainter.getWindow() is used.

      Specified by:
      paint in class WAbstractChart
    • paintEvent

      protected void paintEvent​(WPaintDevice paintDevice)
      Description copied from class: WPaintedWidget
      Paints the widget.

      You should reimplement this method to paint the contents of the widget, using the given paintDevice.

      Specified by:
      paintEvent in class WPaintedWidget
    • drawLabel

      protected void drawLabel​(WPainter painter, WRectF rect, java.util.EnumSet<AlignmentFlag> alignmentFlags, java.lang.CharSequence text, int row)
      drawLabel draw a label on the chart. Will be called by paint.

      You may want to specialize this if you wish to replace the label by a widget. @see WPieChart#createLabelWidget(WWidget textWidget, WPainter painter, WRectF rect, EnumSet alignmentFlags)

    • modelChanged

      protected void modelChanged()
      Overrides:
      modelChanged in class WAbstractChart
    • modelReset

      protected void modelReset()
      Overrides:
      modelReset in class WAbstractChart