API上でロケールやフォーマットを指定する方法[EspressChart]


EspressChartを使ってグラフを作成する際に、数値や日付の書式設定も変更することが可能で、数値であれば¥40,000,000、日付であれば23/09といった表記にすることも可能です。

さらにはロケールに応じた表記も可能なため、日本に限らず海外のロケールに応じて表記するというのも可能です。

本ブログでは、数値や日付をAPI上でロケールに応じたフォーマットで表記する方法、ロケール関係なしでのフォーマットで表記する方法について記載いたします。

ロケールに応じたフォーマット表記

ロケールの設定

ロケールを設定するには、QbChartのsetLocaleメソッドを使用してチャート全体に適用する方法と、LicaleDataTimeFormat(日付)オブジェクトやLicaleNumericFormat(数値)オブジェクトを使用して各オブジェクトに対してロケールを適用する方法があります。

  • チャート全体に適用する方法

【サンプルコード】

Applet parent = null;
int dimension = QbChart.VIEW2D;
int chartType = QbChart.COL;
int fileType = QbChart.DATAFILE;
String fileName = "data/sample1.csv";
String tplName = "tpl/sample1.tpl";

QbChart chart = new QbChart(parent, dimension, chartType, fileType, fileName, false, null, tplName);

chart.setLocale(Locale.US);
  • 各オブジェクトにロケールを適用する方法

・LocaleDataTimeFormatオブジェクトの場合

DataFormatオブジェクト生成のためのメソッド

メソッド

概要

getInstance

日付/時刻をSHORTスタイルで整形

getDateInstance

日付を指定のスタイルで整形

getTimeInstance

時刻を指定のスタイルで整形

getDateTimeInstance

日付/時刻を指定のスタイルで整形

DateFormatオブジェクトの引数

設定値

概要

戻り値(例)

FULL

すべての要素を含むスタイル

2020年5月24日 15時25分07秒 JST

LONG

長い形式

2020/05/24 15:34:26 JST

MEDIUM

中くらいの形式

2020/05/24 15:35:00

SHORT

短い形式

20/05/24 15:35

・LocaleNumericFormatオブジェクトの場合

NumberFormatオブジェクト生成のためのメソッド

メソッド

概要

getInstance

汎用的な数値フォーマット

getCurrencyInstance

通過フォーマット

getIntgerInstance

整数フォーマット

getPercentInstance

パーセントフォーマット

【サンプルコード】

QbChart.setEspressManagerUsed(false);
Applet parent = null;
int dimension = QbChart.VIEW2D;
int chartType = QbChart.COL;
int fileType = QbChart.DATAFILE;
String fileName = "data/sample1.csv";
String tplName = "tpl/sample1.tpl";

QbChart chart = new QbChart(parent, dimension, chartType, fileType, fileName, false, null, tplName);

LocaleDateTimeFormat ldf = LocaleDateTimeFormat.getDateInstance();
ldf.format(DateFormat.FULL);
ldf.setLocale(Locale.US);
int xColIndex = 0;
chart.gethDataPoints().setLabelFormat(xColIndex, ldf);
		
LocaleNumericFormat lnf = LocaleNumericFormat.getCurrencyInstance();
lnf.setLocale(Locale.US);
int yColIndex = 2;
chart.gethDataPoints().setLabelFormat(yColIndex, lnf);

ロケール関係なしでのフォーマット表記

ロケールを考慮せずフォーマットを指定する場合は、DateTimeFormat(日付)オブジェクトやNumericFormat(数値)を使用します。

【サンプルコード】

QbChart.setEspressManagerUsed(false);
Applet parent = null;
int dimension = QbChart.VIEW2D;
int chartType = QbChart.COL;
int fileType = QbChart.DATAFILE;
String fileName = "data/sample1.csv";
String tplName = "tpl/sample1.tpl";

QbChart chart = new QbChart(parent, dimension, chartType, fileType, fileName, false, null, tplName);

DateTimeFormat dtf = new DateTimeFormat();
dtf.yearSymbol = DateTimeFormat.YEAR_1999;//YEAR_1999 or YEAR_99
dtf.hidedate = true;//日を隠す
dtf.orderSymbol = DateTimeFormat.YMD;//YMD or MDY or DMY
dtf.separator1 = "/";//年/月
chart.gethXAxis().setLabelFormat(dtf);

NumericFormat nf = new NumericFormat();
nf.currencyPos = 0;//Symbolの位置を指定
nf.currencySymbol = '¥';
nf.decimal = 0;//小数点以下の桁数
chart.gethYAxis().setLabelFormat(nf);

関連するトピックス:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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