30-11-2013

In this article I show an example of creating a bar chart with a fixed colour. This was missing from the groovychart example set, and will get included into the next build. If you are unfamiliar with groovy chart then here is an introduction to Groovychart

We simply tell the plot's renderer to use the StandardBarPainter. This turns off the gradient paint that is used by default.

Also this example shows one way of using multiple colours in the bars, its probably not the only way and as recommended elsewhere, I suggest the JFreeChart book for anyone intending serious usage of the library.

Here is example screenshot

import com.thecoderscorner.groovychart.chart.ChartBuilder
import groovy.swing.SwingBuilder
import org.jfree.chart.ChartPanel
import org.jfree.chart.axis.NumberAxis
import org.jfree.chart.plot.PlotOrientation
import org.jfree.chart.renderer.category.StandardBarPainter

import java.awt.BorderLayout
import java.awt.Color
import java.awt.GradientPaint

/**
 * This is a simple bar chart with a few basic values that are drawn without gradients.
 */

ChartBuilder builder = new ChartBuilder();
def barChart = builder.barchart(title:'This is a title',
        categoryAxisLabel:'category',
        valueAxisLabel:'value',
        orientation:PlotOrientation.VERTICAL,
        legend:true,
        tooltips:false,
        urls:false
) {
    defaultcategorydataset {
        addValue(10.0, row:"Series1", column:"A")
        addValue(12.0, row:"Series2", column:"A")
        addValue(20.0, row:"Series3", column:"A")
        addValue(6.0, row:"Series4", column:"A")
    }

    categoryplot {
        rangeGridlinePaint Color.GRAY
        domainGridlinePaint Color.GRAY
        foregroundAlpha 1.0f

        rangeaxis {
            upperBound 20.0
            lowerBound 2.0
            standardTickUnits NumberAxis.createIntegerTickUnits()
        }

        renderer {
            barPainter new StandardBarPainter()
            seriesPaint(0, paint: Color.BLUE)
            seriesPaint(2, paint: Color.RED)
            seriesPaint(1, paint: Color.BLACK)
            seriesPaint(3, paint: Color.GREEN)
            seriesOutlinePaint(0, paint: Color.BLACK)
        }
    }
}

SwingBuilder swing = new SwingBuilder();

def frame = swing.frame(
        title:'This is a Frame',
        location:[100,100],
        size:[800,400],
        layout: new BorderLayout(),
        defaultCloseOperation:javax.swing.WindowConstants.EXIT_ON_CLOSE) {
};
frame.add(new ChartPanel(barChart.chart));
frame.setVisible(true);


These may be of interest

We use cookies to analyse traffic and to personalise content. We also embed Twitter and Youtube on some pages, these companies have their own privacy policies.

See the privacy policy and terms of use of this site should you need more information or wish to adjust your settings.