Java tutorial
/* * Copyright (c) 2003-2012 Fred Hutchinson Cancer Research Center * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.fhcrc.cpl.toolbox.gui.chart; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.BoxAndWhiskerToolTipGenerator; import org.jfree.chart.renderer.category.BoxAndWhiskerRenderer; import org.jfree.data.statistics.DefaultBoxAndWhiskerCategoryDataset; import java.util.List; import java.util.ArrayList; import java.awt.*; /** * A simple bar-chart implementation. Could get more complicated. */ public class PanelWithBoxAndWhiskerChart extends PanelWithChart { protected DefaultBoxAndWhiskerCategoryDataset dataset = null; public PanelWithBoxAndWhiskerChart(double[] values, String categoryName, String chartName) { setName(chartName); init(values, categoryName); } public PanelWithBoxAndWhiskerChart(List<Float> values, String categoryName, String chartName) { setName(chartName); init(values, categoryName); } public PanelWithBoxAndWhiskerChart(String chartName) { setName(chartName); init(); } protected void init() { dataset = new DefaultBoxAndWhiskerCategoryDataset(); final BoxAndWhiskerRenderer renderer = new BoxAndWhiskerRenderer(); renderer.setFillBox(false); renderer.setToolTipGenerator(new BoxAndWhiskerToolTipGenerator()); final CategoryAxis xAxis = new CategoryAxis("Type"); final NumberAxis yAxis = new NumberAxis("Value"); final CategoryPlot plot = new CategoryPlot(dataset, xAxis, yAxis, renderer); final JFreeChart chart = new JFreeChart(getName(), new Font("SansSerif", Font.BOLD, 14), plot, true); init(chart.getPlot()); } protected void init(List<Float> values, String categoryName) { init(); addData(values, categoryName); } protected void init(double[] values, String categoryName) { init(); addData(values, categoryName); } public void addData(double[] values, String categoryName) { List<Double> valuesList = new ArrayList<Double>(); for (double value : values) valuesList.add(value); dataset.add(valuesList, categoryName, getName()); } public void addData(List<Float> values, String categoryName) { List<Double> valuesList = new ArrayList<Double>(); for (double value : values) valuesList.add(value); dataset.add(valuesList, categoryName, getName()); } }