APIで複数のデータソースを読み込み方法[EspressChart]


EspressChartでは複数のデータソースを読み込みし、チャートを生成できます。この機能はデータソースとなるファイルが複数に分かれている場合や、異なるデータベースをデータソースとして、一つのチャートを生成したい場合に便利です。

チャートデザイナーの場合は新規でチャートを作成する際のデータソースの指定で、一つ指定した後に「Get Other Data Source」で別のデータソースを指定してというように複数のデータソースを指定できます。

このチャートデザイナーで作成したテンプレートファイルを使用してQbChartコンストラクタでチャートを生成する際に、それに含まれるデータソースへの接続(参照)情報を利用できるのであれば、そのままチャートを生成できます。

しかし、別の環境でチャートを生成する場合など、別のデータソースを指定しなおす必要がある場合には、データソースを指定しなおす必要があります。ただ、これにはQbChartコンストラクタのみでは対応できず、setDataFileメソッドなどでデータソースを指定して場合、上書き扱いとなるため、1つのデータソースしか指定できません。

APIから読み込み場合には、上記の方法ではなく、DataSheetコンストラクタを利用します。

複数のデータソースをマージする機能を提供するクラスであり、これで各種データソースを読み込み、DataSheet配列をQbChartコンストラクタで使用することでAPIからも複数のデータソースを読み込み、チャートに適用できます。

使用例

//データソースのファイルパス
String dataFilePath1="./data/2020.txt";
String dataFilePath2="./data/2021.txt";

//DataSheetを作成
DataSheet dataSheet1= new DataSheet(parent, dataFilePath1 ,false);
DataSheet dataSheet2= new DataSheet(parent, dataFilePath2 ,false);

//配列にしてマージ
DataSheet[] dataSheet= {dataSheet1, dataSheet2};	

//テンプレートファイルのパス
String templatePath = "./chart/multi.tpl";

//読み込み時に転置する列を指定する配列
int[] transposeCol = {1,2,4,5};

//読み込み時の列の対応付けを指定する配列
ColInfo cmap = new ColInfo();
cmap.series = 2;
cmap.category = 0;
cmap.value = 3;

//DataSheet配列をデータソースとしてチャートを作成
QbChart chart = new QbChart(parent,
            QbChart.VIEW2D,
            QbChart.COL,
            dataSheet,
            true,
	    transposeCol,
	    cmap,
	    templatePath);

上記の例では、2つのデータソースファイルを読み込み、マージ後のデータに対して転置を指定しています。

そうではなく、個別のDataSheetでメソッドを使用して行の追加(addRow)や削除(deleteRow)、更新(updateRow)、転置(transpose)なども実施できますので、データソースをDataSheetとして読み込み、個別に調整したあと、マージするといったことも可能です。

関連するトピックス:

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください