/* * This file is part of JGrasstools (http://www.jgrasstools.org) * (C) HydroloGIS - www.hydrologis.com * * JGrasstools is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.jgrasstools.gears.utils.chart; 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.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; /** * A simple category histogram plotter. * * @author Andrea Antonello (www.hydrologis.com) */ public class CategoryHistogram implements IChart { private String[] categories; private double[] values; private DefaultCategoryDataset dataset; private String title; private JFreeChart chart; public CategoryHistogram( String[] categories, double[] values ) { this("Histogram", categories, values); } public CategoryHistogram( String title, String[] categories, double[] values ) { this.title = title; this.categories = categories; this.values = values; } public String getTitle() { return title; } private void createDataset() { dataset = new DefaultCategoryDataset(); for( int i = 0; i < categories.length; i++ ) { dataset.addValue(values[i], "", categories[i]); } } public JFreeChart getChart() { if (chart == null) { createDataset(); chart = ChartFactory.createBarChart(title, // chart title "Category", // domain axis label "Value", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation false, // include legend true, // tooltips? false // URLs? ); CategoryPlot plot = (CategoryPlot) chart.getPlot(); CategoryAxis rangeAxis = plot.getDomainAxis(); rangeAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); } return chart; } public static void main( String[] args ) { String[] asd = {"a", "b", "c", "d", "e", "f", "g"}; double[] qwe = {1, 2, 3, 2.5, 5.5, 1, 2}; CategoryHistogram categoryHistogram = new CategoryHistogram(asd, qwe); PlotFrame frame = new PlotFrame(categoryHistogram); frame.setDimension(1600, 1000); frame.plot(); } }