[an error occurred while processing this directive]

Combined Category Plot Example using JFreeChart


This Example shows you how to create a Combined Category Plot chart using JFreeChart. Code for the chart shows runs of two team in a match.

In the code given below we have extended class ApplicationFrame to create a frame and also pass a string value to the constructor of ApplicationFrame class by using super keyword that will be name of the created frame.

The method used in this example are described below:

pack(): This method invokes the layout manager.

centerFrameOnScreen(): This method is used for the position of the frame in the middle of the screen.

setVisible(): This method is used for display frame on the screen.

addValue(): This method is used for add data into DefaultCategoryDataset class object according to the category.

JFreeChart: JFreeChart class object is used to create new chart according CategoryPlot class object

setBackgroundPaint(): This method is used to set the paint used to fill the chart background.


import java.awt.Font;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.CombinedDomainCategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class CombinedCategoryPlot extends ApplicationFrame {

    public CombinedCategoryPlot(String titel) {

        final JFreeChart chart = createChart();
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(600350));

    public CategoryDataset createDatasetTeam1() {

        final DefaultCategoryDataset result = new DefaultCategoryDataset();

        double[] run = new double[]{5436783636,};

        for (int i = 0; i < run.length; i++) {
            result.addValue(run[i]"Team 1""" (i + 1));
        return result;

    public CategoryDataset createDatasetTeam2() {

        final DefaultCategoryDataset result = new DefaultCategoryDataset();

        double[] run = new double[]{32268418911};

        for (int i = 0; i < run.length; i++) {
            result.addValue(run[i]"Team 2""" (i + 1));
        return result;

    private JFreeChart createChart() {

        final CategoryDataset dataset1 = createDatasetTeam1();
        final NumberAxis rangeAxis1 = new NumberAxis("Run");
        final BarRenderer renderer1 = new BarRenderer();
        renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
        final CategoryPlot subplot1 = new CategoryPlot(dataset1, null, rangeAxis1, 

        final CategoryDataset dataset2 = createDatasetTeam2();
        final NumberAxis rangeAxis2 = new NumberAxis("Run");
        final BarRenderer renderer2 = new BarRenderer();
        renderer2.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
        final CategoryPlot subplot2 = new CategoryPlot(dataset2, null, rangeAxis2, 

        final CategoryAxis domainAxis = new CategoryAxis("Over");
        final CombinedDomainCategoryPlot plot = new 

        plot.add(subplot1, 1);
        plot.add(subplot2, 1);

        final JFreeChart chart = new JFreeChart(
                "Score Bord",
                new Font("SansSerif", Font.BOLD, 12),
        return chart;

    public static void main(final String[] args) {

        final String title = "Combined Category Plot Demo";
        final CombinedCategoryPlot demo = new CombinedCategoryPlot(title);


Download code


[an error occurred while processing this directive]