or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

axes-scales.mdchart-creation.mddata-management.mdexport-display.mdindex.mdlabels-tooltips-legends.mdplots-customization.mdrendering-styling.md
tile.json

tessl/maven-org-jfree--jfreechart

JFreeChart is a comprehensive free chart library for the Java platform that enables developers to create professional-quality charts for both client-side and server-side applications with export capabilities to multiple formats including PNG and JPEG.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.jfree/jfreechart@1.5.x

To install, run

npx @tessl/cli install tessl/maven-org-jfree--jfreechart@1.5.0

index.mddocs/

JFreeChart

JFreeChart is a comprehensive free chart library for the Java platform that enables developers to create professional-quality charts for both client-side (JavaFX and Swing) and server-side applications with export capabilities to multiple formats including PNG and JPEG. Built on the Java2D API, it supports a wide range of chart types including bar charts, pie charts, line charts, XY-plots, time series plots, histograms, box plots, financial charts, and specialized charts for scientific and engineering applications.

Package Information

  • Package Name: org.jfree:jfreechart
  • Package Type: Maven
  • Language: Java
  • Installation: Add to pom.xml:
    <dependency>
        <groupId>org.jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.5.5</version>
    </dependency>

Core Imports

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtils;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYSeriesCollection;

Basic Usage

import org.jfree.chart.*;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.JFrame;

// Create a simple bar chart
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "Series1", "Category1");
dataset.addValue(200, "Series1", "Category2");
dataset.addValue(150, "Series1", "Category3");

JFreeChart chart = ChartFactory.createBarChart(
    "Sales Report",     // chart title
    "Category",         // domain axis label
    "Value",           // range axis label
    dataset            // data
);

// Display in Swing application
ChartPanel chartPanel = new ChartPanel(chart);
JFrame frame = new JFrame("Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);

// Export as PNG
ChartUtils.saveChartAsPNG(new File("chart.png"), chart, 800, 600);

Architecture

JFreeChart follows a structured architecture built around key components:

  • ChartFactory: Factory methods for creating charts with default settings
  • JFreeChart: Main chart container managing plots, titles, and legends
  • Plot: Abstract base for different plot types (CategoryPlot, XYPlot, PiePlot)
  • Renderer: Controls how data is visually represented (bars, lines, shapes, etc.)
  • Dataset: Data model interfaces for different chart types
  • Axis: Manages coordinate systems and labels for plots

This design enables extensive customization while providing simple factory methods for common use cases. Charts can be displayed in Swing/JavaFX applications, exported to various image formats, or rendered server-side for web applications.

Capabilities

Chart Creation

Factory methods for creating all major chart types with sensible defaults. Supports pie charts, bar charts, line charts, area charts, XY plots, time series, and specialized financial charts.

// Pie Charts
public static JFreeChart createPieChart(String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createRingChart(String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createMultiplePieChart(String title, CategoryDataset dataset, TableOrder order, boolean legend, boolean tooltips, boolean urls);

// Bar Charts  
public static JFreeChart createBarChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset);
public static JFreeChart createBarChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createStackedBarChart(String title, String domainAxisLabel, String rangeAxisLabel, CategoryDataset dataset);
public static JFreeChart createWaterfallChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);

// Area Charts
public static JFreeChart createAreaChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset);
public static JFreeChart createStackedAreaChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset);

// Line Charts
public static JFreeChart createLineChart(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset);
public static JFreeChart createTimeSeriesChart(String title, String timeAxisLabel, String valueAxisLabel, XYDataset dataset);

// XY Charts
public static JFreeChart createScatterPlot(String title, String xAxisLabel, String yAxisLabel, XYDataset dataset);
public static JFreeChart createXYLineChart(String title, String xAxisLabel, String yAxisLabel, XYDataset dataset);
public static JFreeChart createXYAreaChart(String title, String xAxisLabel, String yAxisLabel, XYDataset dataset);
public static JFreeChart createStackedXYAreaChart(String title, String xAxisLabel, String yAxisLabel, TableXYDataset dataset);
public static JFreeChart createXYStepChart(String title, String xAxisLabel, String yAxisLabel, XYDataset dataset);
public static JFreeChart createXYStepAreaChart(String title, String xAxisLabel, String yAxisLabel, XYDataset dataset);
public static JFreeChart createXYBarChart(String title, String xAxisLabel, String yAxisLabel, IntervalXYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createBubbleChart(String title, String xAxisLabel, String yAxisLabel, XYZDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);

// Statistical Charts
public static JFreeChart createHistogram(String title, String xAxisLabel, String yAxisLabel, IntervalXYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createBoxAndWhiskerChart(String title, String categoryAxisLabel, String valueAxisLabel, BoxAndWhiskerCategoryDataset dataset, boolean legend);
public static JFreeChart createBoxAndWhiskerChart(String title, String timeAxisLabel, String valueAxisLabel, BoxAndWhiskerXYDataset dataset, boolean legend);

// Financial Charts
public static JFreeChart createCandlestickChart(String title, String timeAxisLabel, String valueAxisLabel, OHLCDataset dataset, boolean legend);
public static JFreeChart createHighLowChart(String title, String timeAxisLabel, String valueAxisLabel, OHLCDataset dataset, boolean legend);

// Specialized Charts
public static JFreeChart createGanttChart(String title, String categoryAxisLabel, String dateAxisLabel, IntervalCategoryDataset dataset, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createPolarChart(String title, XYDataset dataset, boolean legend, boolean tooltips);
public static JFreeChart createWindPlot(String title, String xAxisLabel, String yAxisLabel, WindDataset dataset, boolean legend, boolean tooltips, boolean urls);
public static JFreeChart createWaferMapChart(String title, WaferMapDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls);

Chart Creation

Plots and Customization

Plot management and customization for controlling visual appearance, axes, renderers, and plot-specific features. Includes support for markers, annotations, and complex multi-dataset plots.

// CategoryPlot - for bar charts, line charts
public CategoryDataset getDataset();
public void setDataset(CategoryDataset dataset);
public CategoryAxis getDomainAxis();
public void setDomainAxis(CategoryAxis axis);
public ValueAxis getRangeAxis();
public void setRangeAxis(ValueAxis axis);
public CategoryItemRenderer getRenderer();
public void setRenderer(CategoryItemRenderer renderer);

// XYPlot - for scatter plots, time series
public XYDataset getDataset();
public void setDataset(XYDataset dataset);
public ValueAxis getDomainAxis();
public void setDomainAxis(ValueAxis axis);
public ValueAxis getRangeAxis();
public void setRangeAxis(ValueAxis axis);
public XYItemRenderer getRenderer();
public void setRenderer(XYItemRenderer renderer);

// PiePlot - for pie charts
public PieDataset getDataset();
public void setDataset(PieDataset dataset);
public Paint getSectionPaint(Comparable key);
public void setSectionPaint(Comparable key, Paint paint);

Plots and Customization

Data Management

Dataset interfaces and implementations for providing data to charts. Supports category data, XY data, time series data, and specialized datasets for financial and statistical charts.

// Category Data
public interface CategoryDataset extends KeyedValues2D, Dataset {
    public Number getValue(int row, int column);
    public Number getValue(Comparable rowKey, Comparable columnKey);
    public int getRowCount();
    public int getColumnCount();
    public Comparable getRowKey(int row);
    public Comparable getColumnKey(int column);
}

// XY Data
public interface XYDataset extends SeriesDataset {
    public int getItemCount(int series);
    public Number getX(int series, int item);
    public Number getY(int series, int item);
    public double getXValue(int series, int item);
    public double getYValue(int series, int item);
}

// Time Series
public class TimeSeries implements Cloneable, Serializable {
    public void add(RegularTimePeriod period, Number value);
    public void addOrUpdate(RegularTimePeriod period, Number value);
    public TimeSeriesDataItem getDataItem(RegularTimePeriod period);
    public int getItemCount();
}

Data Management

Rendering and Styling

Renderer interfaces and implementations that control how data is visually represented. Includes customization of colors, shapes, strokes, labels, and tooltips.

// Category Renderers
public interface CategoryItemRenderer extends LegendItemSource {
    public void drawItem(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass);
    public Paint getItemPaint(int row, int column);
    public void setSeriesPaint(int series, Paint paint);
    public Stroke getItemStroke(int row, int column);
    public void setSeriesStroke(int series, Stroke stroke);
}

// XY Renderers  
public interface XYItemRenderer extends LegendItemSource {
    public void drawItem(Graphics2D g2, XYItemRendererState state, Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset, int series, int item, CrosshairState crosshairState, int pass);
    public Paint getItemPaint(int series, int item);
    public void setSeriesPaint(int series, Paint paint);
    public Shape getItemShape(int series, int item);
    public void setSeriesShape(int series, Shape shape);
}

Rendering and Styling

Axes and Scales

Axis management for controlling coordinate systems, labels, tick marks, and value ranges. Supports numeric, date/time, category, and logarithmic axes.

// Value Axes (numeric, date)
public abstract class ValueAxis extends Axis {
    public Range getRange();
    public void setRange(Range range);
    public void setRange(double lower, double upper);
    public boolean isAutoRange();
    public void setAutoRange(boolean auto);
    public boolean isInverted();
    public void setInverted(boolean inverted);
}

// Category Axis
public class CategoryAxis extends Axis {
    public double getCategoryMargin();
    public void setCategoryMargin(double margin);
    public CategoryLabelPositions getCategoryLabelPositions();
    public void setCategoryLabelPositions(CategoryLabelPositions positions);
    public int getMaximumCategoryLabelLines();
    public void setMaximumCategoryLabelLines(int lines);
}

// Number Axis
public class NumberAxis extends ValueAxis {
    public NumberFormat getNumberFormatOverride();
    public void setNumberFormatOverride(NumberFormat formatter);
    public boolean isAutoRangeIncludesZero();
    public void setAutoRangeIncludesZero(boolean flag);
}

// Date Axis
public class DateAxis extends ValueAxis {
    public Date getMinimumDate();
    public void setMinimumDate(Date date);
    public Date getMaximumDate();
    public void setMaximumDate(Date date);
    public DateFormat getDateFormatOverride();
    public void setDateFormatOverride(DateFormat formatter);
}

Axes and Scales

Export and Display

Utilities for displaying charts in GUI applications and exporting to various image formats. Includes Swing integration and image generation capabilities.

// Chart Display (Swing)
public class ChartPanel extends JPanel implements ChartChangeListener, ChartProgressListener {
    public ChartPanel(JFreeChart chart);
    public JFreeChart getChart();
    public void setChart(JFreeChart chart);
    public boolean isDomainZoomable();
    public void setDomainZoomable(boolean zoomable);
    public boolean isRangeZoomable();
    public void setRangeZoomable(boolean zoomable);
}

// Chart Export
public abstract class ChartUtils {
    public static void saveChartAsPNG(File file, JFreeChart chart, int width, int height);
    public static void saveChartAsJPEG(File file, JFreeChart chart, int width, int height);
    public static void writeChartAsPNG(OutputStream out, JFreeChart chart, int width, int height);
    public static void writeChartAsJPEG(OutputStream out, JFreeChart chart, int width, int height);
    public static void writeImageMap(PrintWriter writer, String name, ChartRenderingInfo info);
    public static String getImageMap(String name, ChartRenderingInfo info);
}

Export and Display

Labels, Tooltips, and Legends

Label generation, tooltip creation, and legend management for enhancing chart interactivity and readability.

// Label Generators
public interface CategoryItemLabelGenerator {
    public String generateLabel(CategoryDataset dataset, int row, int column);
}

public interface XYItemLabelGenerator {
    public String generateLabel(XYDataset dataset, int series, int item);
}

public interface PieSectionLabelGenerator {
    public String generateSectionLabel(PieDataset dataset, Comparable key);
}

// Tooltip Generators
public interface CategoryToolTipGenerator {
    public String generateToolTip(CategoryDataset dataset, int row, int column);
}

public interface XYToolTipGenerator {
    public String generateToolTip(XYDataset dataset, int series, int item);
}

// Legend Management
public class LegendTitle extends Title {
    public LegendTitle(LegendItemSource source);
    public LegendItemSource[] getSources();
    public void setSources(LegendItemSource[] sources);
}

Labels, Tooltips, and Legends

Types

// Core Types
public enum PlotOrientation { HORIZONTAL, VERTICAL }
public enum Layer { FOREGROUND, BACKGROUND }

// Data Interfaces
public interface Dataset {
    public void addChangeListener(DatasetChangeListener listener);
    public void removeChangeListener(DatasetChangeListener listener);
    public DatasetGroup getGroup();
    public void setGroup(DatasetGroup group);
}

public interface SeriesDataset extends Dataset {
    public int getSeriesCount();
    public Comparable getSeriesKey(int series);
    public int indexOf(Comparable seriesKey);
}

// Specialized Dataset Interfaces
public interface IntervalXYDataset extends XYDataset {
    public Number getStartX(int series, int item);
    public Number getEndX(int series, int item);
    public Number getStartY(int series, int item); 
    public Number getEndY(int series, int item);
}

public interface IntervalCategoryDataset extends CategoryDataset {
    public Number getStartValue(int row, int column);
    public Number getStartValue(Comparable rowKey, Comparable columnKey);
    public Number getEndValue(int row, int column);
    public Number getEndValue(Comparable rowKey, Comparable columnKey);
}

public interface TableXYDataset extends XYDataset {
    public int getItemCount();
    public Number getX(int item);
    public Number getY(int series, int item);
}

public interface XYZDataset extends XYDataset {
    public Number getZ(int series, int item);
    public double getZValue(int series, int item);
}

public interface OHLCDataset extends XYDataset {
    public Number getHigh(int series, int item);
    public double getHighValue(int series, int item);
    public Number getLow(int series, int item);
    public double getLowValue(int series, int item);
    public Number getOpen(int series, int item);
    public double getOpenValue(int series, int item);
    public Number getClose(int series, int item);
    public double getCloseValue(int series, int item);
    public Number getVolume(int series, int item);
    public double getVolumeValue(int series, int item);
}

public interface BoxAndWhiskerCategoryDataset extends CategoryDataset {
    public Number getMean(int row, int column);
    public Number getMean(Comparable rowKey, Comparable columnKey);
    public Number getMedian(int row, int column);
    public Number getMedian(Comparable rowKey, Comparable columnKey);
    public Number getQ1(int row, int column);
    public Number getQ1(Comparable rowKey, Comparable columnKey);
    public Number getQ3(int row, int column);
    public Number getQ3(Comparable rowKey, Comparable columnKey);
}

public interface BoxAndWhiskerXYDataset extends XYDataset {
    public Number getMean(int series, int item);
    public Number getMedian(int series, int item);
    public Number getQ1(int series, int item);
    public Number getQ3(int series, int item);
    public Number getMinRegularValue(int series, int item);
    public Number getMaxRegularValue(int series, int item);
    public Number getMinOutlier(int series, int item);
    public Number getMaxOutlier(int series, int item);
    public List getOutliers(int series, int item);
}

public interface WindDataset extends XYDataset {
    public Number getWindDirection(int series, int item);
    public double getWindDirectionValue(int series, int item);
    public Number getWindForce(int series, int item);
    public double getWindForceValue(int series, int item);
}

public interface WaferMapDataset extends Dataset {
    public Number getChipValue(int chipx, int chipy);
    public int getMaxChipX();
    public int getMaxChipY();
    public Double getChipValue(Integer chipx, Integer chipy);
}

// Enums
public enum TableOrder { BY_ROW, BY_COLUMN }

// Event Handling
public interface ChangeListener extends EventListener {}
public interface ChartChangeListener extends EventListener {
    public void chartChanged(ChartChangeEvent event);
}
public interface ChartMouseListener extends EventListener {
    public void chartMouseClicked(ChartMouseEvent event);
    public void chartMouseMoved(ChartMouseEvent event);
}

// UI Types
public class RectangleInsets implements Serializable {
    public RectangleInsets(double top, double left, double bottom, double right);
    public double getTop();
    public double getLeft();
    public double getBottom();
    public double getRight();
}