Research & Report

主にライブラリやフレームワーク等について調べたことをまとめていきます。

【jCharts】コンボチャートの凡例の表示順設定

  • 言語:Java
  • ライブラリ:jCharts
  • ライブラリバージョン:0.7.5

jChartsの内部では,チャートの種類毎の凡例をHashMapからIteratorによって取得しています.
そのため,表示順が実行とデバッグ実行で順序が入れ替わったり,DataSeriesにaddIAxisPlotDataSet()を実行した順と異なってしまうということがあります.

そこで,そのHashMapクラスのフィールドdataSetsの可視性がprotectedですので,DataSeriesクラスを継承し,コンストラクタでdataSetsに格納するインスタンスを置き換えたクラスを使用することによって対応可能です.
以下に、addIAxisPlotDataSet()を実行した順に判例を表示するための、DataSeriesを継承したクラスのサンプルコードを記載します。
これを応用して、LinkedHashMapの代わりに、HashMapを継承したTreeMapのアダプタークラスを実装すれば、任意の順序で判例を表示することも可能です。

package sample;

import org.jCharts.chartData.DataSeries;
import java.util.LinkedHashMap;

public class LinkedDataSeries extends DataSeries {

    public LinkedDataSeries(String[] axisLabels, String xAxisTitle, String yAxisTitle, String chartTitle) {
        super(axisLabels, xAxisTitle, yAxisTitle, chartTitle);
        super.dataSets = new LinkedHashMap();
    }
}