Graph - グラフ(PNG形式)の作成

入力データを元にPNG形式の任意のグラフを作成します。
本コンポーネントを使ったフローの例は「各種チャートコンポーネントを使用したフローの例」を参照してください。
グラフの作成にはBFOというライブラリを使用しています。BFOのXMLGraphを使ってグラフを作成するには、グラフの生成情報をXMLデータで記述します。本コンポーネントでは、XMLデータを記述するためにVelocityの機能を使った「テンプレート」を使用します。

通常は、最初からこのコンポーネントを使用するのではなく、円グラフや棒グラフなどの個別グラフコンポーネントを使ってグラフを作成し、さらにカスタマイズしたい場合に本コンポーネントに置き換えて詳細な設定からグラフを作成します。個別グラフコンポーネントから本コンポーネントへ置き換えたときに、テンプレートプロパティにテンプレートが自動作成されて設定されます。テンプレートについては、下記トピック「テンプレートの書式」を参照してください。

個別グラフコンポーネントは以下の9種類があります。詳細はそれぞれのコンポーネントヘルプを参照してください。

円グラフ / 棒グラフ / 積上げグラフ / 複数棒グラフ / 折れ線グラフ / エリアグラフ /
 散布図 / バブルチャート / ガントチャート

■ストリーム情報

入力フォーマットRecord
接続数1
説明 作成したいグラフの種類によって、フィールドの編集が必要です。それぞれのグラフコンポーネントのヘルプを参照してください。
個別グラフコンポーネントから置き換えた場合、同じ入力ストリーム定義になります。
出力フォーマットBinary
説明PNG形式のバイナリイメージを出力します。

出力ストリーム変数

名前データ型説明
AreaTagsString作成したグラフのクリッカブルマップ情報。下記トピック「ストリーム変数AreaTagsについて」を参照してください。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
テンプレートの指定方法choice- テンプレートをファイルで指定するか直接入力するかを指定します。
選択された指定方法によって使用する以下のプロパティが異なるため、プロパティの表示が切り替わります。
ファイル [File] - 外部ファイルから読み込みます。
インライン [Inline] - テンプレートから直接読み込みます。
ファイルに出力boolean- 作成したグラフをファイルとして保存するかどうかを指定します。
はい [true] - 保存します。
いいえ [false] - 保存しません。
出力ファイル名remoteFile入力&出力ファイルに出力が「はい」の場合に出力ファイルパスを指定します。
出力ファイルの起点pathResolver-ファイルに出力が「はい」の場合に出力ファイルパスのベースディレクトリを指定します。
プロジェクトフォルダ [Relative] - プロジェクトファイルと同じフォルダを起点にします。
ホームディレクトリ [ProjectOwner] - ユーザーのホームディレクトリを起点にします。
テンプレートstring-テンプレートの指定方法が「インライン」の場合にテンプレートを直接入力します。
テンプレートファイルパスremoteFile-テンプレートの指定方法が「ファイル」の場合にテンプレートファイルのパスを指定します。
テンプレートの起点pathResolver-テンプレートの指定方法が「ファイル」の場合にテンプレートファイルパスのベースディレクトリを指定します。
プロジェクトフォルダ [Relative] - プロジェクトファイルと同じフォルダを起点にします。
ホームディレクトリ [ProjectOwner] - ユーザーのホームディレクトリを起点にします。
テンプレートエンコーディングchoice-テンプレートの指定方法が「ファイル」の場合にテンプレートファイルのエンコーディングを指定します。
詳細設定string- 詳細設定を指定します。値フィールドをクリックすると詳細設定画面が表示されます。
詳細設定画面では、テストデータを入力してグラフのプレビューを確認しながら詳細設定することができます。
標準色string入力&出力 グラフで使用する色またはパターンを指定します。
初期状態では、標準色は36色定義されており、それを周期的に使用します。 値フィールドをクリックすると「標準色の選択」ダイアログボックスが表示されます。色をクリックし、編集して「設定」ボタンをクリックすると使用する色に設定されます。
パラメータcategory入力&出力 グラフのパラメータを指定します。
個別グラフコンポーネントから本コンポーネントに置き換えた場合、元のグラフコンポーネントのプロパティがパラメータになります。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラ
メータ
エラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし グラフの作成に失敗した場合
なし ファイルに出力が「はい」で、出力ファイル名が指定されていない場合
レコードがない なし コンポーネントの入力ストリーム2入力レコードがない場合

■ストリーム変数AreaTagsについて

入力ストリーム定義でTitle、HREF、Targetフィールドに値を設定すると、Webブラウザでグラフを参照したときのクリッカブルマップ情報のareaタグが、ストリーム変数AreaTagsに設定されます。 Webブラウザでグラフを参照するためのVelocityを使ったHTMLの中で、img、mapとareaタグを併用すると、作成したグラフがクリッカブルマップになります。
入力ストリーム定義のTitle、HREF、Targetフィールドの値を、グラフを作成するためのテンプレート中のdata要素の属性に記述することにより、areaタグの情報を出力します。 テンプレート中のdata要素について、Title、HREF、Targetの他、以下の属性を記述することにより、クリッカブルマップのイベントハンドラでJavaScriptを動作させることができるようになります。

■テンプレートの書式

テンプレートはBFOのXMLGraphでグラフを生成するために使用するXMLデータのベースとなります。
本コンポーネントでは、このテンプレートに対して

ことによりグラフ生成用のXMLを作成します。

Velocityを使う

テンプレート内で使用できるVelocityオブジェクトとしては次のものがあります。

ストリーム($in)

入力ストリームオブジェクトです。 recordメソッドを用いてストリーム内の各レコードにアクセスすることができます。 詳細な仕様についてはVelocityコンポーネントのStreamオブジェクトの説明を参照してください。
Velocityコンポーネントでは$inはストリーム配列となりますが、Graphコンポーネントは単一ストリームしか受け入れないのでストリームオブジェクトとなります。

各種変数($flow, $exvar, $system)

Velocityコンポーネントと同様にフロー内で定義した各種変数が参照できます。 詳細な仕様についてはVelocityコンポーネントの変数の説明を参照してください。

システム($sys)

Velocityコンポーネントと同様にシステム関数群が使用できます。 詳細な仕様についてはVelocityコンポーネントのシステムの説明を参照してください。

パラメータ($param)

コンポーネントのパラメータプロパティです。

メソッド名引数返り値の型説明
get()StringValueパラメータ名を指定して値(Valueオブジェクト)を取得します。
getString()String, StringString第1引数にパラメータ名を指定してパラメータ値を取得します。
第2引数にはパラメータが定義されていなかった場合のデフォルト値を指定します。
getDecimal()String, BigDecimalBigDecimal第1引数にパラメータ名を指定してパラメータ値を取得します。
第2引数にはパラメータが定義されていなかった場合のデフォルト値を指定します。
exists()Stringbooleanパラメータ名を指定して、そのパラメータに値が設定されているかどうかを取得します。

ユーティリティ($util)

グラフコンポーネント専用のユーティリティ関数群です。
合計値の算出やその他とする割合の計算などがこのユーティリティを用いて行えます。

メソッド名引数返り値の型説明
formatDate()DateStringjava.util.Date型の引数を「YYYY-MM-DD」形式にフォーマットして出力します。
formatValue()ValueString引数のValueの型をチェックしてそれがDateTime型である場合は「YYYY-MM-DD」形式で出力します。
それ以外の型の場合は通常の文字列形式で出力します。
getZERO()なしBigDecimalBigDecimalの0を返します
sum()StringBigDecimal指定のフィールドレコードすべてでの合計値を返します
max()BigDecimal, StringBigDecimal第1引数で指定した値と第2引数で指定したフィールドの値の中で最大の値を返します。
calcRaidus()BigDecimal, BigDecimal, BigDecimalBigDecimal第1引数 - 横軸の最大値
第2引数 - 縦軸の最大値
第3引数 - 横軸での値の大きさ(幅)
バブルグラフで泡が正円になるように横軸での値の大きさから縦軸での値の大きさ(高さ)を返します。
sumOther()String, doubleBigDecimal第1引数で指定したフィールドの値がそのフィールドの合計値の第2引数で指定したパーセンテージ以下のものの合計を返します。
(円グラフや棒グラフで「その他とする割合」から「その他」の合計値を算出するのに使用します。)
percentage()BigDecimal, BigDecimaldouble第1引数(合計値)内での第2引数(部分値)の割合を0~100までのパーセンテージで返します。(小数点第2位まで)
distinct()StringList<String>指定のフィールドの重複しない値のリストを返します。
積上げ棒グラフや複数棒グラフでバーの種類を取得する場合などに使用します。
setGroup()String, StringList<String>第1引数にグループとするフィールド名、第2引数に値のフィールド名を指定してユーティリティにグループを設定します。
返り値はグループの重複しないフィールド名のリストです。
isOther()String, doubleboolean第1引数にsetGroupで指定したグループのグループ名を指定し、そのグループの合計値が全体の合計に対して第2引数で指定した割合以下であるかどうかを返します。
積上げ棒グラフや複数棒グラフでグループが「その他」になるかどうかを判別するのに使用できます。
setGroupが行われていない場合はこのメソッドはエラーになります。
getDefaultColor()intStringColorsプロパティで指定した標準色の中から指定の引数番目の色名を返します。(0ベースインデックス)
インデックスが定義された色数よりも大きい場合は先頭に戻って同じ色が再び使用されるので0以上の値を指定する限りインデックスの範囲エラーが発生することはありません。
getRecordColor()String, StringString入力レコードに「Color」という名前のフィールドがある場合に第1引数で指定されたフィールドが第2引数で指定された値である最初のレコードのColorフィールドの値を返します。
該当するレコードがない場合や「Color」という名前のフィールドが定義されていない場合は空文字が返ります。

「グラフの詳細設定」画面で詳細設定を使う

詳細設定ではグラフの色を変えたり3D化するなどの設定を簡単に行うことができます。
またテストデータを入力してグラフのプレビューを確認することもできます。

以下のいずれかの操作で「グラフの詳細設定」画面を表示します。

本コンポーネントでXMLの独自拡張部分として「a:id」属性があります。
「グラフの詳細設定」画面で右にある「詳細設定」タブで、「a:id」属性を以下の書式で記述することによりグラフの詳細な設定を行うことができます。設定の記述を改行区切りで複数定義することができます。

<ID>.<属性名>:属性値

IDはテンプレート内でa:id属性で示されます。a:id属性がない場合は要素名がIDとなります。
よく使う設定については「一覧から選択」ボタンをクリックして表示される一覧から選んで簡単に設定することが可能です。
それぞれの要素でどのような属性が使用できるかはBFOのタグリファレンスサンプルを参照してください。

テストデータ

グラフのテストデータをCSV形式で指定します。
テストデータを入力して下の「プレビュー」ボタンをクリックすると、プレビューを確認することができます。

テンプレートと詳細設定の使い分け

どちらを使用した場合でも出力結果は同じになります。 テンプレートを変更する最初のうちは、詳細設定の「一覧から選択」ボタンで選択した値を変更していくのが簡単です。 要素自体を追加するような変更の場合はテンプレートの変更でしか行うことができません。

テンプレートの指定方法が「ファイル」の場合はテンプレートはサーバーからダウンロードして表示されます。テンプレートを修正した場合、詳細設定画面を閉じた時に変更をサーバーにアップロードして反映することができます。

ファイルが存在しない場合、テンプレートを読み込みができないため詳細設定画面のほとんどの機能は使用することができません。また、テンプレートファイルはコンポーネントの初期化時に一度だけ読み込まれるため、フロー内でテンプレートファイルを書き換えながらグラフを作成していくようなことはできません。