package org.radargun.reporting.html;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StatisticalBarRenderer;
import org.jfree.data.statistics.DefaultStatisticalCategoryDataset;
/**
* Chart showing the values as vertical bars.
*
* @author Mircea Markus <Mircea.Markus@jboss.com>
*/
public class BarChart extends ComparisonChart {
protected final DefaultStatisticalCategoryDataset categorySet = new DefaultStatisticalCategoryDataset();
protected boolean hasDeviations = false;
protected double upperRange = 0;
public BarChart(String domainLabel, String rangeLabel) {
super(domainLabel, rangeLabel);
}
@Override
protected JFreeChart createChart() {
JFreeChart chart = ChartFactory.createBarChart(null, domainLabel, rangeLabel,
categorySet, PlotOrientation.VERTICAL, true, false, false);
if (hasDeviations) {
chart.getCategoryPlot().setRenderer(new StatisticalBarRenderer());
}
if (upperRange > 0) {
chart.getCategoryPlot().getRangeAxis().setRange(0, upperRange * 1.1);
}
return chart;
}
@Override
public void addValue(double value, double deviation, Comparable seriesName, double xValue, String xString) {
hasDeviations = deviation != 0;
upperRange = Math.max(upperRange, Math.min(value + deviation, 3 * value));
categorySet.add(value, deviation, seriesName, xString);
}
}