nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、グラフを描画する事が必要とされる場合があります。
JFreeChartを使って、グラフを描画するサービスを提供します。
チャートを表現するJFreeChartオブジェクトを生成する機能を抽象化したのがJFreeChartFactoryです。
チャートに乗せるチャート描画領域Plotオブジェクトを生成する機能を抽象化したのがPlotFactoryです。
チャート描画領域に描画するデータDataSetオブジェクトを生成する機能を抽象化したのがDatasetFactoryです。
関連するパッケージは、以下です。
アプリケーション向けインタフェースJFreeChartFactoryを使った簡単なアプリケーションのサンプルを示します。
- import java.io.FileOutputStream;
- import java.awt.image.BufferedImage;
- import javax.imageio.ImageIO;
- import javax.imageio.ImageWriter;
- import javax.imageio.stream.ImageOutputStream;
- import org.jfree.chart.JFreeChart;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.graph.JFreeChartFactory;
- import jp.ossc.nimbus.service.graph.ChartConditionImpl;
- import jp.ossc.nimbus.service.graph.XYPlotConditionImpl;
- // JFreeChartFactoryサービスを取得する
- JFreeChartFactory chartFactory = (JFreeChartFactory)ServiceManagerFactory.getServiceObject("ChartFactory");
- // Plotの生成条件を生成する
- XYPlotConditionImpl plotCondition = new XYPlotConditionImpl();
- // 描画するPlotの名前を設定する
- plotCondition.setName("Sample1");
- // JFreeChartの生成条件を生成する
- ChartConditionImpl condition = new ChartConditionImpl();
- // 描画するチャートのタイトルを設定する
- condition.setTitle("サンプル1");
- // Plotの生成条件を登録する
- condition.addPlotCondition(plotCondition);
- // JFreeChartを生成する
- JFreeChart chart = chartFactory.createChart(condition);
- // バッファイメージにチャートを描画する
- BufferedImage buffImg = chart.createBufferedImage(1024, 512);
- // ImageWriterを取得する
- ImageWriter imageWriter = (ImageWriter)ImageIO.getImageWritersByFormatName("png").next();
- // 出力する画像ファイルのストリームを開く
- FileOutputStream fos = new FileOutputStream("graph.png");
- // 画像出力用のストリームでラップする
- ImageOutputStream ios = ImageIO.createImageOutputStream(fos);
- // ImageWriterに画像出力用ストリームを設定する
- imageWriter.setOutput(ios);
- // バッファイメージを画像出力用ストリームに書き込む
- imageWriter.write(buffImg);
- // フラッシュ
- ios.flush();
- // ImageWriterの書込み終了処理
- imageWriter.dispose();
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.graph.JFreeChartFactoryService | デフォルト実装 |
JFreeChartFactory向けインタフェースPlotFactoryは、JFreeChartにおけるグラフの描画領域を表すPlotを生成する機能を表します。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.graph.JFreeChartFactory | グラフの描画領域Plotを作成するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.graph.XYPlotFactoryService | X軸とY軸を持つ二次元のグラフ描画領域XYPlotを生成する。 |
jp.ossc.nimbus.service.graph.CombinedDomainXYPlotFactoryService | X軸とY軸を持つ二次元のグラフ描画領域XYPlotを垂直方向に連結するCombinedDomainXYPlotを生成する。 |
PlotFactory向けインタフェースDatasetFactoryは、JFreeChartにおけるグラフのデータを表すDatasetを生成する機能を表します。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.graph.PlotFactory | グラフのデータDatasetを作成するために使用する |
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.graph.CSVFileTimeSeriesCollectionFactoryService | X軸が時間となる時系列データTimeSeriesをCSVファイルから読み込んで生成する。 |
jp.ossc.nimbus.service.graph.DatabaseTimeSeriesCollectionFactoryService | X軸が時間となる時系列データTimeSeriesをデータベースから読み込んで生成する。 |
jp.ossc.nimbus.service.graph.CSVFileOHLCDatasetFactoryService | ローソク足データOHLCDatasetをCSVファイルから読み込んで生成する。 |
jp.ossc.nimbus.service.graph.DatabaseOHLCDatasetFactoryService | ローソク足データOHLCDatasetをデータベースから読み込んで生成する。 |
jp.ossc.nimbus.service.graph.MovingAverageFactoryService | 他のDatasetFactoryをラップして、移動平均線のデータDatasetを生成する。 |
サンプルは、以下。