Created
September 26, 2014 15:55
-
-
Save sdudley/b710fd384e495e7f1439 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* =========================================================== | |
* JFreeChart : a free chart library for the Java(tm) platform | |
* =========================================================== | |
* | |
* (C) Copyright 2000-2011, by Object Refinery Limited and Contributors. | |
* | |
* Project Info: http://www.jfree.org/jfreechart/index.html | |
* | |
* This library is free software; you can redistribute it and/or modify it | |
* under the terms of the GNU Lesser General Public License as published by | |
* the Free Software Foundation; either version 2.1 of the License, or | |
* (at your option) any later version. | |
* | |
* This library 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 Lesser General Public | |
* License for more details. | |
* | |
* You should have received a copy of the GNU Lesser General Public | |
* License along with this library; if not, write to the Free Software | |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
* USA. | |
* | |
* [Oracle and Java are registered trademarks of Oracle and/or its affiliates. | |
* Other names may be trademarks of their respective owners.] | |
* | |
* ------------------ | |
* BarChartDemo1.java | |
* ------------------ | |
* (C) Copyright 2003-2011, by Object Refinery Limited and Contributors. | |
* | |
* Original Author: David Gilbert (for Object Refinery Limited); | |
* Contributor(s): ; | |
* | |
* Changes | |
* ------- | |
* 09-Mar-2005 : Version 1 (DG); | |
* | |
*/ | |
import java.awt.Color; | |
import java.awt.Dimension; | |
import java.awt.GradientPaint; | |
import org.jfree.chart.ChartFactory; | |
import org.jfree.chart.ChartPanel; | |
import org.jfree.chart.JFreeChart; | |
import org.jfree.chart.StandardChartTheme; | |
import org.jfree.chart.axis.CategoryAxis; | |
import org.jfree.chart.axis.CategoryLabelPositions; | |
import org.jfree.chart.axis.NumberAxis; | |
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.ui.ApplicationFrame; | |
import org.jfree.ui.RefineryUtilities; | |
import java.awt.*; | |
import java.awt.geom.Ellipse2D; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.InputStream; | |
import java.text.AttributedCharacterIterator; | |
import java.text.AttributedString; | |
import java.util.Map; | |
/** | |
* A simple demonstration application showing how to create a bar chart. | |
*/ | |
public class BarChartDemo1 extends ApplicationFrame { | |
private static final long serialVersionUID = 1L; | |
{ | |
// set a theme using the new shadow generator feature available in | |
// 1.0.14 - for backwards compatibility it is not enabled by default | |
ChartFactory.setChartTheme(new StandardChartTheme("JFree/Shadow", | |
true)); | |
} | |
/** | |
* Creates a new demo instance. | |
* | |
* @param title the frame title. | |
*/ | |
public BarChartDemo1(String title) { | |
super(title); | |
CategoryDataset dataset = createDataset(); | |
JFreeChart chart = createChart(dataset); | |
ChartPanel chartPanel = new ChartPanel(chart); | |
chartPanel.setFillZoomRectangle(true); | |
chartPanel.setMouseWheelEnabled(true); | |
chartPanel.setPreferredSize(new Dimension(500, 270)); | |
setContentPane(chartPanel); | |
} | |
/** | |
* Returns a sample dataset. | |
* | |
* @return The dataset. | |
*/ | |
private static CategoryDataset createDataset() { | |
// row keys... | |
String series1 = "First"; | |
String series2 = "Second"; | |
String series3 = "Third"; | |
// column keys... | |
String category1 = "クローズ"; | |
String category2 = "クローズ"; | |
String category3 = "クローズクローズクローズ"; | |
String category4 = "Category 4 クローズ"; | |
String category5 = "Category 5"; | |
// create the dataset... | |
DefaultCategoryDataset dataset = new DefaultCategoryDataset(); | |
dataset.addValue(1.0, series1, category1); | |
dataset.addValue(4.0, series1, category2); | |
dataset.addValue(3.0, series1, category3); | |
dataset.addValue(5.0, series1, category4); | |
dataset.addValue(5.0, series1, category5); | |
dataset.addValue(5.0, series2, category1); | |
dataset.addValue(7.0, series2, category2); | |
dataset.addValue(6.0, series2, category3); | |
dataset.addValue(8.0, series2, category4); | |
dataset.addValue(4.0, series2, category5); | |
dataset.addValue(4.0, series3, category1); | |
dataset.addValue(3.0, series3, category2); | |
dataset.addValue(2.0, series3, category3); | |
dataset.addValue(3.0, series3, category4); | |
dataset.addValue(6.0, series3, category5); | |
return dataset; | |
} | |
/** | |
* Creates a sample chart. | |
* | |
* @param dataset the dataset. | |
* | |
* @return The chart. | |
*/ | |
private static JFreeChart createChart(CategoryDataset dataset) { | |
// create the chart... | |
JFreeChart chart = ChartFactory.createBarChart( | |
"Bar Chxxxxart Demo 1", // chart title | |
"Category", // domain axis label | |
"Value", // range axis label | |
dataset, // data | |
PlotOrientation.HORIZONTAL, // orientation | |
true, // include legend | |
true, // tooltips? | |
false // URLs? | |
); | |
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... | |
// set the background color for the chart... | |
chart.setBackgroundPaint(Color.white); | |
// get a reference to the plot for further customisation... | |
CategoryPlot plot = (CategoryPlot) chart.getPlot(); | |
// ****************************************************************** | |
// More than 150 demo applications are included with the JFreeChart | |
// Developer Guide...for more information, see: | |
// | |
// > http://www.object-refinery.com/jfreechart/guide.html | |
// | |
// ****************************************************************** | |
// set the range axis to display integers only... | |
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); | |
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); | |
// disable bar outlines... | |
BarRenderer renderer = (BarRenderer) plot.getRenderer(); | |
renderer.setDrawBarOutline(false); | |
// set up gradient paints for series... | |
GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, | |
0.0f, 0.0f, new Color(0, 0, 64)); | |
GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, | |
0.0f, 0.0f, new Color(0, 64, 0)); | |
GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, | |
0.0f, 0.0f, new Color(64, 0, 0)); | |
renderer.setSeriesPaint(0, gp0); | |
renderer.setSeriesPaint(1, gp1); | |
renderer.setSeriesPaint(2, gp2); | |
applyCategoryAxisFont(plot); | |
return chart; | |
} | |
private static void applyCategoryAxisFont(CategoryPlot plot) | |
{ | |
try | |
{ | |
// WORKS: using Japanese font | |
// Sourced from http://dl.ipafont.ipa.go.jp/IPAexfont/ipaexg00201.zip | |
//File fontFile = new File("/tmp/ipaexg.ttf"); | |
// DOESN'T WORK: using Source Sans font | |
// Sourced from http://ff.static.1001fonts.net/s/o/source-sans-pro.regular.ttf | |
File fontFile = new File("/tmp/source-sans-pro.regular.ttf"); | |
Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(fontFile)); | |
String str = "クローズ"; | |
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font); | |
System.out.println("Font " + font.getName() + " can display up to: " + font.canDisplayUpTo(str)); | |
AttributedString as = new AttributedString(str, font.getAttributes()); | |
Map<AttributedCharacterIterator.Attribute,Object> attributes = as.getIterator().getAttributes(); | |
Font newFont = Font.getFont(attributes); | |
System.out.println("Font " + newFont.getName() + " can display up to: " + newFont.canDisplayUpTo(str)); | |
Font biggerFont = font.deriveFont(12.0f); | |
plot.getDomainAxis().setTickLabelFont(biggerFont); | |
} | |
catch (Throwable t) | |
{ | |
System.out.println("Could not set font due to runtime error: " + t.getClass().toString()); | |
} | |
} | |
/** | |
* Starting point for the demonstration application. | |
* | |
* @param args ignored. | |
*/ | |
public static void main(String[] args) { | |
BarChartDemo1 demo = new BarChartDemo1("Bar zzzzChart Demo 1"); | |
demo.pack(); | |
RefineryUtilities.centerFrameOnScreen(demo); | |
demo.setVisible(true); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment