edu.wustl.cab2b.client.ui.visualization.charts.BarChart.java Source code

Java tutorial

Introduction

Here is the source code for edu.wustl.cab2b.client.ui.visualization.charts.BarChart.java

Source

/*L
 * Copyright Georgetown University, Washington University.
 *
 * Distributed under the OSI-approved BSD 3-Clause License.
 * See http://ncip.github.com/cab2b/LICENSE.txt for details.
 */

package edu.wustl.cab2b.client.ui.visualization.charts;

import java.awt.Color;
import java.util.List;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;

/**
 * This class generates the Bar Chart
 * @author chetan_patil
 */
public class BarChart extends AbstractChart {
    private static final long serialVersionUID = 1L;

    public BarChart() {

    }

    protected Dataset createColumnWiseData() {
        List<String> selectedRowNames = chartModel.getSelectedRowNames();
        List<String> selectedColumnNames = chartModel.getSelectedColumnsNames();
        String[] series = getColumnIndicesSeries(selectedColumnNames);

        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();

        for (int i = 0; i < selectedRowNames.size(); i++) {
            for (int j = 0; j < selectedColumnNames.size(); j++) {
                Object value = chartModel.getValueAt(i, j);
                defaultcategorydataset.addValue(convertValue(value), series[j], selectedRowNames.get(i));
            }
        }

        return defaultcategorydataset;
    }

    protected Dataset createRowWiseData() {
        List<String> selectedRowNames = chartModel.getSelectedRowNames();
        List<String> selectedColumnNames = chartModel.getSelectedColumnsNames();
        String[] categories = getColumnIndicesSeries(selectedColumnNames);

        DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();

        for (int i = 0; i < selectedColumnNames.size(); i++) {
            for (int j = 0; j < selectedRowNames.size(); j++) {
                Object value = null;
                value = chartModel.getValueAt(j, i);
                defaultcategorydataset.addValue(convertValue(value), selectedRowNames.get(j), categories[i]);
            }
        }

        return defaultcategorydataset;
    }

    private String[] getColumnIndicesSeries(List<String> selectedColumnNames) {
        String[] series = new String[chartModel.getSelectedColumnsNames().size()];
        for (int i = 0; i < chartModel.getSelectedColumnsNames().size(); i++) {
            series[i] = chartModel.getSelectedColumnsNames().get(i);
        }
        return series;
    }

    /*
     * (non-Javadoc)
     * @see edu.wustl.cab2b.client.ui.charts.AbstractChart#createChart(org.jfree.data.general.Dataset)
     */
    protected JFreeChart createChart(Dataset dataset) {
        CategoryDataset categoryDataSet = (CategoryDataset) dataset;

        JFreeChart jFreeChart = ChartFactory.createBarChart("Bar Chart", null, "Value", categoryDataSet,
                PlotOrientation.VERTICAL, true, true, false);
        jFreeChart.setBackgroundPaint(Color.white);

        CategoryPlot categoryPlot = (CategoryPlot) jFreeChart.getPlot();
        categoryPlot.setBackgroundPaint(Color.white);
        categoryPlot.setDomainGridlinePaint(Color.white);
        categoryPlot.setRangeGridlinePaint(Color.white);

        NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
        numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        BarRenderer barRenderer = (BarRenderer) categoryPlot.getRenderer();
        barRenderer.setDrawBarOutline(false);
        barRenderer.setMinimumBarLength(0.7D);
        barRenderer.setMaximumBarWidth(0.7D);
        barRenderer.setItemMargin(0.1D);

        CategoryAxis categoryaxis = categoryPlot.getDomainAxis();
        categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

        return jFreeChart;
    }

    /**
     * This class is used for the generation of the labels to be displayed against each group on x-axis. 
     * @author chetan_patil
     */
    static class LabelGenerator extends StandardCategoryItemLabelGenerator {
        private static final long serialVersionUID = 1L;

        LabelGenerator() {
        }

        public String generateLabel(CategoryDataset categoryDataSet, int i, int j) {
            return categoryDataSet.getRowKey(i).toString();
        }
    }

}