

CreateJFreeChartXYLine.java
package com.syboos.demo.jfreechart;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;
import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection;
//JFreeChartで折れ線グラフ(XYLineChart)を作成 サンプル public class CreateJFreeChartXYLine {
/** * JFreeChartで折れ線グラフ(XYLineChart)を作成 */ public static void main(String[] args) { // ステップ1:Datasetオブジェクトの作成 XYDataset dataset = createXYDataset(); // ステップ2:DatasetからJFreeChartオブジェクトを作成、及び設定 JFreeChart freeChart = createChart(dataset); // ファイルや、Servletに出力 saveAsFile(freeChart, "c:\jfreechart\lineXY.png", 500, 400); }
// ファイルに保存する public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) { FileOutputStream out = null; try { File outFile = new File(outputPath); if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } out = new FileOutputStream(outputPath); // PNGイメージファイルに保存する ChartUtilities.writeChartAsPNG(out, chart, 300, 200); // JPEGイメージファイルに保存する // ChartUtilities.writeChartAsJPEG(out, chart, 500, 400); out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { // do nothing } } } }
// XYDatasetからJFreeChartを作成 public static JFreeChart createChart(XYDataset dataset) { // 折れ線グラフを作成するためのJFreeChartオブジェクトの生成:ChartFactory.createXYLineChart JFreeChart jfreechart = ChartFactory.createXYLineChart("XYLine Chart Demo", // タイトル "年分", // categoryAxisLabel (カテゴリ軸、横軸、X軸のラベル) "数量", // valueAxisLabel(ヴァリュー軸、縦軸、Y軸のラベル) dataset, // dataset PlotOrientation.VERTICAL, true, // legend false, // tooltips false); // URLs
// 以下の設定は省略しても構いません。 // 出力される円グラフの透明度、境界線の色/有無などの設定を行う:クラスPlot(折れ線グラフはCategoryPlot) XYPlot plot = (XYPlot) jfreechart.getPlot(); // 背景色 透明度 plot.setBackgroundAlpha(0.5f); // 前景色 透明度 plot.setForegroundAlpha(0.5f); // その他設定は XYPlotを参照
return jfreechart; }
/** * XYDatasetオブジェクトの作成。 * * 折れ線グラフ(XYLineChart)を作成するために、XYDatasetを用意しなければなりません。 */ private static XYDataset createXYDataset() { XYSeries xyseries1 = new XYSeries("One"); xyseries1.add(1987, 50); xyseries1.add(1997, 20); xyseries1.add(2007, 30); XYSeries xyseries2 = new XYSeries("Two"); xyseries2.add(1987, 20); xyseries2.add(1997, 10D); xyseries2.add(2007, 40D);
XYSeries xyseries3 = new XYSeries("Three"); xyseries3.add(1987, 40); xyseries3.add(1997, 30.0008); xyseries3.add(2007, 38.24);
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
xySeriesCollection.addSeries(xyseries1); xySeriesCollection.addSeries(xyseries2); xySeriesCollection.addSeries(xyseries3); return xySeriesCollection; }
}