public class

JFreeChart

extends Object
implements Serializable Cloneable PlotChangeListener TitleChangeListener
java.lang.Object
   ↳ org.jfree.chart.JFreeChart

Class Overview

A chart class implemented using the Java 2D APIs. The current version supports bar charts, line charts, pie charts and xy plots (including time series data).

JFreeChart coordinates several objects to achieve its aim of being able to draw a chart on a Java 2D graphics device: a list of Title objects (which often includes the chart's legend), a Plot and a Dataset (the plot in turn manages a domain axis and a range axis).

You should use a ChartPanel to display a chart in a GUI.

The ChartFactory class contains static methods for creating 'ready-made' charts.

Summary

Constants
float DEFAULT_BACKGROUND_IMAGE_ALPHA The default background image alpha.
Fields
public static final Image DEFAULT_BACKGROUND_IMAGE The default background image.
public static final int DEFAULT_BACKGROUND_IMAGE_ALIGNMENT The default background image alignment.
public static final Paint DEFAULT_BACKGROUND_PAINT The default background color.
public static final Font DEFAULT_TITLE_FONT The default font for titles.
public static final ProjectInfo INFO Information about the project.
Public Constructors
JFreeChart(Plot plot)
Creates a new chart based on the supplied plot.
JFreeChart(String title, Plot plot)
Creates a new chart with the given title and plot.
JFreeChart(String title, Font titleFont, Plot plot, boolean createLegend)
Creates a new chart with the given title and plot.
Public Methods
void addChangeListener(ChartChangeListener listener)
Registers an object for notification of changes to the chart.
void addLegend(LegendTitle legend)
Adds a legend to the plot and sends a ChartChangeEvent to all registered listeners.
void addProgressListener(ChartProgressListener listener)
Registers an object for notification of progress events relating to the chart.
void addSubtitle(Title subtitle)
Adds a chart subtitle, and notifies registered listeners that the chart has been modified.
void addSubtitle(int index, Title subtitle)
Adds a subtitle at a particular position in the subtitle list, and sends a ChartChangeEvent to all registered listeners.
void clearSubtitles()
Clears all subtitles from the chart and sends a ChartChangeEvent to all registered listeners.
Object clone()
Clones the object, and takes care of listeners.
BufferedImage createBufferedImage(int width, int height, int imageType, ChartRenderingInfo info)
Creates and returns a buffered image into which the chart has been drawn.
BufferedImage createBufferedImage(int width, int height)
Creates and returns a buffered image into which the chart has been drawn.
BufferedImage createBufferedImage(int width, int height, ChartRenderingInfo info)
Creates and returns a buffered image into which the chart has been drawn.
BufferedImage createBufferedImage(int imageWidth, int imageHeight, double drawWidth, double drawHeight, ChartRenderingInfo info)
Creates and returns a buffered image into which the chart has been drawn.
void draw(Graphics2D g2, Rectangle2D area)
Draws the chart on a Java 2D graphics device (such as the screen or a printer).
void draw(Graphics2D g2, Rectangle2D area, ChartRenderingInfo info)
Draws the chart on a Java 2D graphics device (such as the screen or a printer).
void draw(Graphics2D g2, Rectangle2D chartArea, Point2D anchor, ChartRenderingInfo info)
Draws the chart on a Java 2D graphics device (such as the screen or a printer).
boolean equals(Object obj)
Tests this chart for equality with another object.
void fireChartChanged()
Sends a default ChartChangeEvent to all registered listeners.
boolean getAntiAlias()
Returns a flag that indicates whether or not anti-aliasing is used when the chart is drawn.
Image getBackgroundImage()
Returns the background image for the chart, or null if there is no image.
int getBackgroundImageAlignment()
Returns the background image alignment.
float getBackgroundImageAlpha()
Returns the alpha-transparency for the chart's background image.
Paint getBackgroundPaint()
Returns the paint used for the chart background.
Paint getBorderPaint()
Returns the paint used to draw the chart border (if visible).
Stroke getBorderStroke()
Returns the stroke used to draw the chart border (if visible).
CategoryPlot getCategoryPlot()
Returns the plot cast as a CategoryPlot.
LegendTitle getLegend()
Returns the legend for the chart, if there is one.
LegendTitle getLegend(int index)
Returns the nth legend for a chart, or null.
RectangleInsets getPadding()
Returns the padding between the chart border and the chart drawing area.
Plot getPlot()
Returns the plot for the chart.
RenderingHints getRenderingHints()
Returns the collection of rendering hints for the chart.
Title getSubtitle(int index)
Returns a chart subtitle.
int getSubtitleCount()
Returns the number of titles for the chart.
List getSubtitles()
Returns the list of subtitles for the chart.
Object getTextAntiAlias()
Returns the current value stored in the rendering hints table for KEY_TEXT_ANTIALIASING.
TextTitle getTitle()
Returns the main chart title.
XYPlot getXYPlot()
Returns the plot cast as an XYPlot.
void handleClick(int x, int y, ChartRenderingInfo info)
Handles a 'click' on the chart.
boolean isBorderVisible()
Returns a flag that controls whether or not a border is drawn around the outside of the chart.
boolean isNotify()
Returns a flag that controls whether or not change events are sent to registered listeners.
static void main(String[] args)
Prints information about JFreeChart to standard output.
void plotChanged(PlotChangeEvent event)
Receives notification that the plot has changed, and passes this on to registered listeners.
void removeChangeListener(ChartChangeListener listener)
Deregisters an object for notification of changes to the chart.
void removeLegend()
Removes the first legend in the chart and sends a ChartChangeEvent to all registered listeners.
void removeProgressListener(ChartProgressListener listener)
Deregisters an object for notification of changes to the chart.
void removeSubtitle(Title title)
Removes the specified subtitle and sends a ChartChangeEvent to all registered listeners.
void setAntiAlias(boolean flag)
Sets a flag that indicates whether or not anti-aliasing is used when the chart is drawn.
void setBackgroundImage(Image image)
Sets the background image for the chart and sends a ChartChangeEvent to all registered listeners.
void setBackgroundImageAlignment(int alignment)
Sets the background alignment.
void setBackgroundImageAlpha(float alpha)
Sets the alpha-transparency for the chart's background image.
void setBackgroundPaint(Paint paint)
Sets the paint used to fill the chart background and sends a ChartChangeEvent to all registered listeners.
void setBorderPaint(Paint paint)
Sets the paint used to draw the chart border (if visible).
void setBorderStroke(Stroke stroke)
Sets the stroke used to draw the chart border (if visible).
void setBorderVisible(boolean visible)
Sets a flag that controls whether or not a border is drawn around the outside of the chart.
void setNotify(boolean notify)
Sets a flag that controls whether or not listeners receive ChartChangeEvent notifications.
void setPadding(RectangleInsets padding)
Sets the padding between the chart border and the chart drawing area, and sends a ChartChangeEvent to all registered listeners.
void setRenderingHints(RenderingHints renderingHints)
Sets the rendering hints for the chart.
void setSubtitles(List subtitles)
Sets the title list for the chart (completely replaces any existing titles) and sends a ChartChangeEvent to all registered listeners.
void setTextAntiAlias(boolean flag)
Sets the value in the rendering hints table for KEY_TEXT_ANTIALIASING to either VALUE_TEXT_ANTIALIAS_ON or VALUE_TEXT_ANTIALIAS_OFF, then sends a ChartChangeEvent to all registered listeners.
void setTextAntiAlias(Object val)
Sets the value in the rendering hints table for KEY_TEXT_ANTIALIASING and sends a ChartChangeEvent to all registered listeners.
void setTitle(String text)
Sets the chart title and sends a ChartChangeEvent to all registered listeners.
void setTitle(TextTitle title)
Sets the main title for the chart and sends a ChartChangeEvent to all registered listeners.
void titleChanged(TitleChangeEvent event)
Receives notification that a chart title has changed, and passes this on to registered listeners.
Protected Methods
EntityCollection drawTitle(Title t, Graphics2D g2, Rectangle2D area, boolean entities)
Draws a title.
void notifyListeners(ChartProgressEvent event)
Sends a ChartProgressEvent to all registered listeners.
void notifyListeners(ChartChangeEvent event)
Sends a ChartChangeEvent to all registered listeners.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.jfree.chart.event.PlotChangeListener
From interface org.jfree.chart.event.TitleChangeListener

Constants

public static final float DEFAULT_BACKGROUND_IMAGE_ALPHA

The default background image alpha.

Constant Value: 0.5

Fields

public static final Image DEFAULT_BACKGROUND_IMAGE

The default background image.

public static final int DEFAULT_BACKGROUND_IMAGE_ALIGNMENT

The default background image alignment.

public static final Paint DEFAULT_BACKGROUND_PAINT

The default background color.

public static final Font DEFAULT_TITLE_FONT

The default font for titles.

public static final ProjectInfo INFO

Information about the project.

Public Constructors

public JFreeChart (Plot plot)

Creates a new chart based on the supplied plot. The chart will have a legend added automatically, but no title (although you can easily add one later).

Note that the ChartFactory class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.

Parameters
plot the plot (null not permitted).

public JFreeChart (String title, Plot plot)

Creates a new chart with the given title and plot. A default font (DEFAULT_TITLE_FONT) is used for the title, and the chart will have a legend added automatically.

Note that the ChartFactory class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.

Parameters
title the chart title (null permitted).
plot the plot (null not permitted).

public JFreeChart (String title, Font titleFont, Plot plot, boolean createLegend)

Creates a new chart with the given title and plot. The createLegend argument specifies whether or not a legend should be added to the chart.

Note that the ChartFactory class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.

Parameters
title the chart title (null permitted).
titleFont the font for displaying the chart title (null permitted).
plot controller of the visual representation of the data (null not permitted).
createLegend a flag indicating whether or not a legend should be created for the chart.

Public Methods

public void addChangeListener (ChartChangeListener listener)

Registers an object for notification of changes to the chart.

Parameters
listener the listener (null not permitted).

public void addLegend (LegendTitle legend)

Adds a legend to the plot and sends a ChartChangeEvent to all registered listeners.

Parameters
legend the legend (null not permitted).
See Also

public void addProgressListener (ChartProgressListener listener)

Registers an object for notification of progress events relating to the chart.

Parameters
listener the object being registered.

public void addSubtitle (Title subtitle)

Adds a chart subtitle, and notifies registered listeners that the chart has been modified.

Parameters
subtitle the subtitle (null not permitted).
See Also

public void addSubtitle (int index, Title subtitle)

Adds a subtitle at a particular position in the subtitle list, and sends a ChartChangeEvent to all registered listeners.

Parameters
index the index (in the range 0 to getSubtitleCount()).
subtitle the subtitle to add (null not permitted).

public void clearSubtitles ()

Clears all subtitles from the chart and sends a ChartChangeEvent to all registered listeners.

public Object clone ()

Clones the object, and takes care of listeners. Note: caller shall register its own listeners on cloned graph.

Returns
  • A clone.
Throws
CloneNotSupportedException if the chart is not cloneable.

public BufferedImage createBufferedImage (int width, int height, int imageType, ChartRenderingInfo info)

Creates and returns a buffered image into which the chart has been drawn.

Parameters
width the width.
height the height.
imageType the image type.
info carries back chart state information (null permitted).
Returns
  • A buffered image.

public BufferedImage createBufferedImage (int width, int height)

Creates and returns a buffered image into which the chart has been drawn.

Parameters
width the width.
height the height.
Returns
  • A buffered image.

public BufferedImage createBufferedImage (int width, int height, ChartRenderingInfo info)

Creates and returns a buffered image into which the chart has been drawn.

Parameters
width the width.
height the height.
info carries back chart state information (null permitted).
Returns
  • A buffered image.

public BufferedImage createBufferedImage (int imageWidth, int imageHeight, double drawWidth, double drawHeight, ChartRenderingInfo info)

Creates and returns a buffered image into which the chart has been drawn.

Parameters
imageWidth the image width.
imageHeight the image height.
drawWidth the width for drawing the chart (will be scaled to fit image).
drawHeight the height for drawing the chart (will be scaled to fit image).
info optional object for collection chart dimension and entity information.
Returns
  • A buffered image.

public void draw (Graphics2D g2, Rectangle2D area)

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

This method is the focus of the entire JFreeChart library.

Parameters
g2 the graphics device.
area the area within which the chart should be drawn.

public void draw (Graphics2D g2, Rectangle2D area, ChartRenderingInfo info)

Draws the chart on a Java 2D graphics device (such as the screen or a printer). This method is the focus of the entire JFreeChart library.

Parameters
g2 the graphics device.
area the area within which the chart should be drawn.
info records info about the drawing (null means collect no info).

public void draw (Graphics2D g2, Rectangle2D chartArea, Point2D anchor, ChartRenderingInfo info)

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

This method is the focus of the entire JFreeChart library.

Parameters
g2 the graphics device.
chartArea the area within which the chart should be drawn.
anchor the anchor point (in Java2D space) for the chart (null permitted).
info records info about the drawing (null means collect no info).

public boolean equals (Object obj)

Tests this chart for equality with another object.

Parameters
obj the object (null permitted).
Returns
  • A boolean.

public void fireChartChanged ()

Sends a default ChartChangeEvent to all registered listeners.

This method is for convenience only.

public boolean getAntiAlias ()

Returns a flag that indicates whether or not anti-aliasing is used when the chart is drawn.

Returns
  • The flag.

public Image getBackgroundImage ()

Returns the background image for the chart, or null if there is no image.

Returns
  • The image (possibly null).

public int getBackgroundImageAlignment ()

Returns the background image alignment. Alignment constants are defined in the org.jfree.ui.Align class in the JCommon class library.

Returns
  • The alignment.

public float getBackgroundImageAlpha ()

Returns the alpha-transparency for the chart's background image.

Returns
  • The alpha-transparency.

public Paint getBackgroundPaint ()

Returns the paint used for the chart background.

Returns
  • The paint (possibly null).

public Paint getBorderPaint ()

Returns the paint used to draw the chart border (if visible).

Returns
  • The border paint.

public Stroke getBorderStroke ()

Returns the stroke used to draw the chart border (if visible).

Returns
  • The border stroke.

public CategoryPlot getCategoryPlot ()

Returns the plot cast as a CategoryPlot.

NOTE: if the plot is not an instance of CategoryPlot, then a ClassCastException is thrown.

Returns
  • The plot.
See Also

public LegendTitle getLegend ()

Returns the legend for the chart, if there is one. Note that a chart can have more than one legend - this method returns the first.

Returns
  • The legend (possibly null).
See Also

public LegendTitle getLegend (int index)

Returns the nth legend for a chart, or null.

Parameters
index the legend index (zero-based).
Returns
  • The legend (possibly null).

public RectangleInsets getPadding ()

Returns the padding between the chart border and the chart drawing area.

Returns
  • The padding (never null).

public Plot getPlot ()

Returns the plot for the chart. The plot is a class responsible for coordinating the visual representation of the data, including the axes (if any).

Returns
  • The plot.

public RenderingHints getRenderingHints ()

Returns the collection of rendering hints for the chart.

Returns
  • The rendering hints for the chart (never null).

public Title getSubtitle (int index)

Returns a chart subtitle.

Parameters
index the index of the chart subtitle (zero based).
Returns
  • A chart subtitle.

public int getSubtitleCount ()

Returns the number of titles for the chart.

Returns
  • The number of titles for the chart.
See Also

public List getSubtitles ()

Returns the list of subtitles for the chart.

Returns
  • The subtitle list (possibly empty, but never null).

public Object getTextAntiAlias ()

Returns the current value stored in the rendering hints table for KEY_TEXT_ANTIALIASING.

Returns
  • The hint value (possibly null).

public TextTitle getTitle ()

Returns the main chart title. Very often a chart will have just one title, so we make this case simple by providing accessor methods for the main title. However, multiple titles are supported - see the addSubtitle(Title) method.

Returns
  • The chart title (possibly null).

public XYPlot getXYPlot ()

Returns the plot cast as an XYPlot.

NOTE: if the plot is not an instance of XYPlot, then a ClassCastException is thrown.

Returns
  • The plot.
See Also

public void handleClick (int x, int y, ChartRenderingInfo info)

Handles a 'click' on the chart. JFreeChart is not a UI component, so some other object (for example, ChartPanel) needs to capture the click event and pass it onto the JFreeChart object. If you are not using JFreeChart in a client application, then this method is not required.

Parameters
x x-coordinate of the click (in Java2D space).
y y-coordinate of the click (in Java2D space).
info contains chart dimension and entity information (null not permitted).

public boolean isBorderVisible ()

Returns a flag that controls whether or not a border is drawn around the outside of the chart.

Returns
  • A boolean.

public boolean isNotify ()

Returns a flag that controls whether or not change events are sent to registered listeners.

Returns
  • A boolean.

public static void main (String[] args)

Prints information about JFreeChart to standard output.

Parameters
args no arguments are honored.

public void plotChanged (PlotChangeEvent event)

Receives notification that the plot has changed, and passes this on to registered listeners.

Parameters
event information about the plot change.

public void removeChangeListener (ChartChangeListener listener)

Deregisters an object for notification of changes to the chart.

Parameters
listener the listener (null not permitted)

public void removeLegend ()

Removes the first legend in the chart and sends a ChartChangeEvent to all registered listeners.

See Also

public void removeProgressListener (ChartProgressListener listener)

Deregisters an object for notification of changes to the chart.

Parameters
listener the object being deregistered.

public void removeSubtitle (Title title)

Removes the specified subtitle and sends a ChartChangeEvent to all registered listeners.

Parameters
title the title.

public void setAntiAlias (boolean flag)

Sets a flag that indicates whether or not anti-aliasing is used when the chart is drawn.

Anti-aliasing usually improves the appearance of charts, but is slower.

Parameters
flag the new value of the flag.
See Also

public void setBackgroundImage (Image image)

Sets the background image for the chart and sends a ChartChangeEvent to all registered listeners.

Parameters
image the image (null permitted).

public void setBackgroundImageAlignment (int alignment)

Sets the background alignment. Alignment options are defined by the org.jfree.ui.Align class.

Parameters
alignment the alignment.

public void setBackgroundImageAlpha (float alpha)

Sets the alpha-transparency for the chart's background image. Registered listeners are notified that the chart has been changed.

Parameters
alpha the alpha value.

public void setBackgroundPaint (Paint paint)

Sets the paint used to fill the chart background and sends a ChartChangeEvent to all registered listeners.

Parameters
paint the paint (null permitted).

public void setBorderPaint (Paint paint)

Sets the paint used to draw the chart border (if visible).

Parameters
paint the paint.
See Also

public void setBorderStroke (Stroke stroke)

Sets the stroke used to draw the chart border (if visible).

Parameters
stroke the stroke.

public void setBorderVisible (boolean visible)

Sets a flag that controls whether or not a border is drawn around the outside of the chart.

Parameters
visible the flag.

public void setNotify (boolean notify)

Sets a flag that controls whether or not listeners receive ChartChangeEvent notifications.

Parameters
notify a boolean.
See Also

public void setPadding (RectangleInsets padding)

Sets the padding between the chart border and the chart drawing area, and sends a ChartChangeEvent to all registered listeners.

Parameters
padding the padding (null not permitted).
See Also

public void setRenderingHints (RenderingHints renderingHints)

Sets the rendering hints for the chart. These will be added (using the Graphics2D.addRenderingHints() method) near the start of the JFreeChart.draw() method.

Parameters
renderingHints the rendering hints (null not permitted).

public void setSubtitles (List subtitles)

Sets the title list for the chart (completely replaces any existing titles) and sends a ChartChangeEvent to all registered listeners.

Parameters
subtitles the new list of subtitles (null not permitted).
See Also

public void setTextAntiAlias (boolean flag)

Sets the value in the rendering hints table for KEY_TEXT_ANTIALIASING to either VALUE_TEXT_ANTIALIAS_ON or VALUE_TEXT_ANTIALIAS_OFF, then sends a ChartChangeEvent to all registered listeners.

Parameters
flag the new value of the flag.

public void setTextAntiAlias (Object val)

Sets the value in the rendering hints table for KEY_TEXT_ANTIALIASING and sends a ChartChangeEvent to all registered listeners.

Parameters
val the new value (null permitted).

public void setTitle (String text)

Sets the chart title and sends a ChartChangeEvent to all registered listeners. This is a convenience method that ends up calling the setTitle(TextTitle) method. If there is an existing title, its text is updated, otherwise a new title using the default font is added to the chart. If text is null the chart title is set to null.

Parameters
text the title text (null permitted).
See Also

public void setTitle (TextTitle title)

Sets the main title for the chart and sends a ChartChangeEvent to all registered listeners. If you do not want a title for the chart, set it to null. If you want more than one title on a chart, use the addSubtitle(Title) method.

Parameters
title the title (null permitted).
See Also

public void titleChanged (TitleChangeEvent event)

Receives notification that a chart title has changed, and passes this on to registered listeners.

Parameters
event information about the chart title change.

Protected Methods

protected EntityCollection drawTitle (Title t, Graphics2D g2, Rectangle2D area, boolean entities)

Draws a title. The title should be drawn at the top, bottom, left or right of the specified area, and the area should be updated to reflect the amount of space used by the title.

Parameters
t the title (null not permitted).
g2 the graphics device (null not permitted).
area the chart area, excluding any existing titles (null not permitted).
entities a flag that controls whether or not an entity collection is returned for the title.
Returns
  • An entity collection for the title (possibly null).

protected void notifyListeners (ChartProgressEvent event)

Sends a ChartProgressEvent to all registered listeners.

Parameters
event information about the event that triggered the notification.

protected void notifyListeners (ChartChangeEvent event)

Sends a ChartChangeEvent to all registered listeners.

Parameters
event information about the event that triggered the notification.