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.PlotOrientation; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.JFreeChart; import org.jfree.chart.ChartFactory; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.category.CategoryToPieDataset; import org.jfree.data.general.PieDataset; import org.jfree.data.general.DefaultPieDataset; import java.util.List; import java.util.Map; import java.awt.*; /** * A simple pie-chart implementation. Could get more complicated. */ public class PanelWithPieChart extends PanelWithChart { public static final int DEFAULT_LABEL_FONT_SIZE = 12; protected DefaultPieDataset dataset; public PanelWithPieChart() { init(); } public PanelWithPieChart(Map<String, Float> nameValueMap, String chartName) { init(nameValueMap); setName(chartName); } public PanelWithPieChart(List<String> xValues, List<Float> yValues, String chartName) { String[] xValuesArray = new String[xValues.size()]; double[] yValuesArray = new double[yValues.size()]; for (int i = 0; i < xValues.size(); i++) { xValuesArray[i] = xValues.get(i); yValuesArray[i] = yValues.get(i); } init(xValuesArray, yValuesArray); setName(chartName); } public PanelWithPieChart(String[] xValues, int[] yValues, String chartName) { double[] yValuesDouble = new double[yValues.length]; for (int i = 0; i < yValues.length; i++) yValuesDouble[i] = yValues[i]; init(xValues, yValuesDouble); setName(chartName); } public PanelWithPieChart(String[] xValues, float[] yValues, String chartName) { double[] yValuesDouble = new double[yValues.length]; for (int i = 0; i < yValues.length; i++) yValuesDouble[i] = yValues[i]; init(xValues, yValuesDouble); setName(chartName); } public PanelWithPieChart(String[] xValues, double[] yValues, String chartName) { init(xValues, yValues); setName(chartName); } protected void init() { dataset = new DefaultPieDataset(); JFreeChart chart = ChartFactory.createPieChart(null, dataset, true, true, false); init(chart.getPlot()); //set font size to default setLabelFontSize(DEFAULT_LABEL_FONT_SIZE); } protected void init(String[] xValues, double[] yValues) { init(); addData(xValues, yValues); } public void init(Map<String, Float> nameValueMap) { init(); addData(nameValueMap); } public void addData(List<String> names, List<Float> values) { for (int i = 0; i < names.size(); i++) { addData(names.get(i), values.get(i)); } } public void addData(Map<String, Float> nameValueMap) { for (String name : nameValueMap.keySet()) { addData(name, nameValueMap.get(name)); } } public void addData(String[] names, double[] values) { for (int i = 0; i < names.length; i++) { addData(names[i], values[i]); } } public void addData(String dataName, double dataValue) { dataset.setValue(dataName, dataValue); } public void setLabelFontSize(int labelFontSize) { Font labelFont = ((PiePlot) getPlot()).getLabelFont(); Font newFont = new Font(labelFont.getName(), labelFont.getStyle(), labelFontSize); ((PiePlot) getPlot()).setLabelFont(newFont); } }