[応用機能]グラフ

アプリケーション開発において、グラフを描画する事が必要とされる場合があります。

JFreeChartを使って、グラフを描画するサービスを提供します。
チャートを表現するJFreeChartオブジェクトを生成する機能を抽象化したのがJFreeChartFactoryです。
チャートに乗せるチャート描画領域Plotオブジェクトを生成する機能を抽象化したのがPlotFactoryです。
チャート描画領域に描画するデータDataSetオブジェクトを生成する機能を抽象化したのがDatasetFactoryです。

関連するパッケージは、以下です。

アプリケーション向けインタフェース JFreeChartFactory

アプリケーション向けインタフェースJFreeChartFactoryを使った簡単なアプリケーションのサンプルを示します。

  1. import java.io.FileOutputStream;
  2. import java.awt.image.BufferedImage;
  3. import javax.imageio.ImageIO;
  4. import javax.imageio.ImageWriter;
  5. import javax.imageio.stream.ImageOutputStream;
  6. import org.jfree.chart.JFreeChart;
  7. import jp.ossc.nimbus.core.ServiceManagerFactory;
  8. import jp.ossc.nimbus.service.graph.JFreeChartFactory;
  9. import jp.ossc.nimbus.service.graph.ChartConditionImpl;
  10. import jp.ossc.nimbus.service.graph.XYPlotConditionImpl;
  11. // JFreeChartFactoryサービスを取得する
  12. JFreeChartFactory chartFactory = (JFreeChartFactory)ServiceManagerFactory.getServiceObject("ChartFactory");
  13. // Plotの生成条件を生成する
  14. XYPlotConditionImpl plotCondition = new XYPlotConditionImpl();
  15. // 描画するPlotの名前を設定する
  16. plotCondition.setName("Sample1");
  17. // JFreeChartの生成条件を生成する
  18. ChartConditionImpl condition = new ChartConditionImpl();
  19. // 描画するチャートのタイトルを設定する
  20. condition.setTitle("サンプル1");
  21. // Plotの生成条件を登録する
  22. condition.addPlotCondition(plotCondition);
  23. // JFreeChartを生成する
  24. JFreeChart chart = chartFactory.createChart(condition);
  25. // バッファイメージにチャートを描画する
  26. BufferedImage buffImg = chart.createBufferedImage(1024, 512);
  27. // ImageWriterを取得する
  28. ImageWriter imageWriter = (ImageWriter)ImageIO.getImageWritersByFormatName("png").next();
  29. // 出力する画像ファイルのストリームを開く
  30. FileOutputStream fos = new FileOutputStream("graph.png");
  31. // 画像出力用のストリームでラップする
  32. ImageOutputStream ios = ImageIO.createImageOutputStream(fos);
  33. // ImageWriterに画像出力用ストリームを設定する
  34. imageWriter.setOutput(ios);
  35. // バッファイメージを画像出力用ストリームに書き込む
  36. imageWriter.write(buffImg);
  37. // フラッシュ
  38. ios.flush();
  39. // ImageWriterの書込み終了処理
  40. imageWriter.dispose();

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.graph.JFreeChartFactoryServiceデフォルト実装

JFreeChartFactory向けインタフェース PlotFactory

JFreeChartFactory向けインタフェースPlotFactoryは、JFreeChartにおけるグラフの描画領域を表すPlotを生成する機能を表します。

このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。

上位サービス用途
jp.ossc.nimbus.service.graph.JFreeChartFactoryグラフの描画領域Plotを作成するために使用する

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.graph.XYPlotFactoryServiceX軸とY軸を持つ二次元のグラフ描画領域XYPlotを生成する。
jp.ossc.nimbus.service.graph.CombinedDomainXYPlotFactoryServiceX軸とY軸を持つ二次元のグラフ描画領域XYPlotを垂直方向に連結するCombinedDomainXYPlotを生成する。

PlotFactory向けインタフェース DatasetFactory

PlotFactory向けインタフェースDatasetFactoryは、JFreeChartにおけるグラフのデータを表すDatasetを生成する機能を表します。

このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。

上位サービス用途
jp.ossc.nimbus.service.graph.PlotFactoryグラフのデータDatasetを作成するために使用する

実装サービスの一覧は以下のとおりです。

実装サービス実装概要
jp.ossc.nimbus.service.graph.CSVFileTimeSeriesCollectionFactoryServiceX軸が時間となる時系列データTimeSeriesをCSVファイルから読み込んで生成する。
jp.ossc.nimbus.service.graph.DatabaseTimeSeriesCollectionFactoryServiceX軸が時間となる時系列データTimeSeriesをデータベースから読み込んで生成する。
jp.ossc.nimbus.service.graph.CSVFileOHLCDatasetFactoryServiceローソク足データOHLCDatasetをCSVファイルから読み込んで生成する。
jp.ossc.nimbus.service.graph.DatabaseOHLCDatasetFactoryServiceローソク足データOHLCDatasetをデータベースから読み込んで生成する。
jp.ossc.nimbus.service.graph.MovingAverageFactoryService他のDatasetFactoryをラップして、移動平均線のデータDatasetを生成する。

サンプルは、以下。