ダッシュボード上のチャート、レポートをフォームから指定

EspressReport ES、EspressDashboardでは作成したダッシュボードに常に最新のデータを表示することはもちろんのこと、データソースがDBであれば、発行するSQL クエリを動的に変更するフォームをダッシュボード上に配置することで簡単にチャートやレポートの期間を変更することが可能です。

株価データの簡単なダッシュボード

左のフォームから日付の選択を行うことでチャートに表示する期間が変更され、銘柄名を変更することで違う銘柄のデータを表示できます。

このようなフォームを作成するためには、まずデータソースの登録の際にフォームにしたい列の条件に”:”をつけてパラメータを設定します。

銘柄名の列のOrフィールドに:NAMEと設定

次に設定した項目をフォームとしてダッシュボードに登録します。

これにより、はじめのようなフォームが作成され、ダッシュボード上で簡単にデータを変更できます。

タグ: , , ,

クロス表からのグラフの作成【動的なWebチャートを作成・配信するJAVAツール:EspressChart】

EspressChartで、データソースとして扱う形式は通常、各行にデータ系列や値、カテゴリをすべて記載した形式を使用しています。

しかしエクセル等のデータソースを用いる場合、表として見やすさを優先しているため左下のようなクロス表であることが多いかと思われます。この場合EspressChartでは、右下の表のように変換を行います。

この変換はデザイナーでグラフを作成する際には、メニューのData→Modify Data MappingからMulti Selectionを指定することで、変換が行われます。

またAPIではデータソースを読み込む際に、変換する列を指定し、変換を行います。
// 変換前の列を指定
int[] test_transpose = {1,2,3};
// 変換後の列を指定
ColInfo test_col = new ColInfo();
test_col.category = 0;
test_col.series = 1;
test_col.value = 2;

QbChart test_chart = new QbChart(
parent,            // Applet
QbChart.VIEW2D, //2次元
QbChart.COL, //グラフの種類
“データ―ス名”, //データソースのパス
“true”, //変換の使用
test_transpose, //変換する列
test_col, //ColInfoの指定
”テンプレート名”); //テンプレートのパス

 

タグ: ,

チャートに使用されている文字列を置換する方法【動的なWebチャートを作成・配信するJAVAツール:EspressChart】

データソースでは英語を使用しているが、チャートでは日本語で表示したい場合などに、データソースを作り直す必要はありません。EspressChartの置換機能により、指定の文字列を置換することが可能です。

デザイナーでは下のようにメニューのFormat→Text PropertiesからRuntime Text SubstitutionのOriginal Textに置換対象の文字列を入力、Substitute Withに置換後の文字列を入力し、置き換えを行います。またListボタンから置換している文字列の表示も可能です。

APIから設定する場合は以下のように指定することで文字列の置き換えが行えます。

chart.gethDataPoints().replace(“置換対象文字列”, “置換後の文字列”);

タグ:

凡例内の一部オブジェクトの非表示方法【EspressChart】

通常、凡例には使用しているデータ系列が全て表示されます。しかしグラフ上は同一のデータとして扱いたい場合などには任意で非表示にすることが可能です。

下のようなグラフの”Fruit juice”と”Water”を非表示にします。

デザイナでの凡例内オブジェクト非表示設定

Format→Legendから凡例のプロパティを開きます。

Hideボタンをクリックします。Ctrl+クリックで非表示にしたいデータ系列を選択します。

APIでの凡例オブジェクト非表示設定

void setItemsHidden(int colIndex, boolean[] b)
凡例内のアイテムの表示/非表示を設定します。

パラメータ:
colIndex – 凡例に用いられているデータソースの列を指定します。
b – 凡例内のアイテムの表示/非表示を配列で指定します。

使用例:
データソースに合わせてデータ系列のcolIndexである1、”Fruit juice”と”Water”は前から3番目と4番目なので後ろ2つをtrueに設定しています。

chart.gethLabel.setItemsHidden( 1, new boolean[]{fales,false,true,true});

設定を行うと下のように”Fruit juice”と”Water”は表示されません。

 

Log4JとEspressReportとの有効利用方法について【Java対応レポート・帳票ツールEspressReport】

1.1 Log4J とは

Log4J は Jakarta プロジェクトで開発が進められている Java プログラム用のログ API です。Log4J を利用することで、様々なロギングが可能になります。またパフォーマンスにも十分に配慮されて設計されているので、ログの記録に用いるコードをプログラムソースに残したまま出荷しても、特に問題は起こらないようになっています。

Log4Jを使うことで例えば以下のようなことが可能です。

ログの出力レベルの設定
ログファイルのローテーション
設定ファイルによる出力メッセージのカスタマイズ
クラス及びパッケージ毎のロギング制御
出力対象のカスタマイズ(ファイル、コンソール、DB、・・・)

他にも Log4J の優れた機能があります。ログを出力する部分をグループ化しておくことで、プログラム中の特定部分の動作情報だけを出力したり、出力先にファイル、OutputStream、java.io.Writer、リモート Log4J サーバ、リモート Unix Syslog デーモン、NT イベントログなどを簡単に指定することができます。

http://logging.apache.org/

1.2 Log4J の構成

Log4J には 3 つの主要なコンポーネントがあります。
• Logger
• Appender
• Layout

Logger: Log4Jの最大の利点は、ログメッセージをカテゴリーごとに分類することで、 ログメッセージをカテゴリーごとに出力するかどうかの選択ができることで す。この機能を使えば、任意の粒度でログ出力するかどうかの可能になります。
カテゴリー名は、大文字と小文字の区別があり、ドットで区切られた階層的 な名前付け規則に従います。例えば、”com.foo” と名づけられたカテゴリー は、 “com.foo.Bar”と名づけられたカテゴリーの親になります。また、全て のカテゴリーの親にあたるものはRootカテゴリーになります。
それぞれのカテゴリーは、優先度を割り当てることができます。設定可能な 優先度は、高い順にFATAL、ERROR、WARN、 INFO、DEBUGです。与えられたカテゴリーが優先度を割 り当てられないときは、優先度が割り当てられた最も近い先祖から、優先度 を継承します。

Appender :Log4Jでは、appenderを設定することで様々な宛先にログを出力することが できます。 現在appenderは、コンソール、ファイル、GUI コンポーネント、 リモートソケットサーバ、JMS、NT イベントログ、リモート・UNIX Syslog デーモンがあります。カテゴリは複数のアペンダ-を参照することができます。

Layout はその名の通り、ログの出力フォーマットを指定するものです。単純なテキスト出力、ユーザが指定したレイアウト、HTML のテーブルレイアウトなどを指定することができます。

1.3 Configuration Scripts:

通常アプリケーション・コードにログのリクエストを挿入することは簡単なことではありません。Log4J環境は完全にプログラム・コンフィグラブルです。さらにコンフィグラブル・ファイルを使用することでさらに柔軟性が得られます。コンフィグラブル・ファイルはXMLでjava properties (key=value)に記述することができます。

1.4 Log4j in EspressReport:

EspressReportのJavaプログラムにlog4jパッケージをインポートすることができます。
※log4jライブラリは、脆弱性の問題により、ver 7.0 update 12以降のバージョンでは含まれておりません。

——–Javaプログラムサンプル————-

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.text.*;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.*;

import quadbase.common.param.Parameters;
import quadbase.reportdesigner.ReportAPI.QbReport;




——————————————————

1.5 ログ出力例:

TomcatでのLog4Jによるログ・フォルダに生成された出力ログ

1.6 レポート出力例:

EspressReportによりログからPDFでの出力サンプル

1.7 結論:
Log4jJはロギングの様々な要件を実装したロギングライブラリの一つで、多くの機能を持っていますが、そのレポート機能は貧弱なものがあります。Log4JとEspressReportを併用することにより、レポートとチャートを持ったユーザに分かり易いレポートをダイナミックに作成・配信することができます。
同様にEspressChartを活用してグラフ(チャート)への展開も可能です。

タグ: , , , , , , , ,

エクセルなどのファイル内の情報も簡単にインターネット共有【EspressReport ES, EspressDashboard】

EspressReport ES (ERES), EspressDashboardではデータベースからのデータ取得のみでなく、エクセルのXLSファイルやCSVファイル、テキストデータなどからもデータを取得し、素早くレポートやチャートとして展開・共有可能です。

この時の共有方法もWEBブラウザ(HTML)からアクセスするだけではなく、PDFやエクセルで展開することもできます。

具体的には、まずデータソースとなるファイル・データをERES(またはEspressDashboard)サーバがダイナミックに取得します。

そして取得したファイル・データから下記ブログのようにチャート/レポートなどを作成します。

Excelから任意のセルを指定して簡単にグラフを作成 – EspressChart

また既存のファイルにダイナミックに上書きすることで、展開されているレポートやダッシュボードに情報を反映することも可能です。

さらに指定したメールアドレスにエクセル、PDFファイルを決められた時間にメール配信するスケジュールを設定することも可能です。

 

 

タグ:

Excelから任意のセルを指定して簡単にグラフを作成 – EspressChart

EspressChartではデータソース(取り込み元データ)にExcelを指定することが可能ですが、バージョン6.6より任意のセルを指定して簡単かつ便利にExcelデータを使用したグラフの作成が可能となりました。

まず予め下記のようなExcelのデータを準備しておきます。

EspressChartのデータソース管理画面でExcelを選択しADDを押下します。

Excelデータソース画面が開くので、任意の名前を指定後、対象のExcelファイルを指定します。

するとExcelのデータがプレビュー表示されます。シートが複数ある場合はシートの選択も可能です。

プレビュー表示のExcelデータの中からEspressChartのグラフ作成として使用したい範囲をマウスのドラッグ&ドロップで選択します。その際、フィールド名(列名)も含むようにしてください。

データソース管理画面に戻るので、作成したデータソースを選択し、NEXTを押下します。

グラフ作成に使用するプレビュー表示を確認できます。データタイプはExcelから自動で判別して適切なものが設定されます。

実際にExcelデータから作成したグラフのサンプルです。
このチャートはオーバーレイチャートと呼ばれる複数のグラフの組み合わせ(複合グラフ)です。

タグ:

画像を用いた独自パターンの作成方法

EspressChartではグラフに色を設定するほかにパターンを選択できます。

APIからの設定を行うことで既存のパターンの他に独自に用意した画像を用いることも可能です。

APIでは通常、下記のように色を指定し、グラフエリアなどに適用します。
//配列に色を指定
Color[] color = { Color.DARK_GRAY, Color.blue };
//色の設定
chart.gethDataPoints().setColors(color);

このcolorに追加でパターンや画像を指定することで任意のパターンを作成できます。
//配列に色を指定
Color[] color = { Color.DARK_GRAY, Color.blue };
//パターンの指定
color[0] = new QbPattern(color[0], QbChart.PATTERN_CROSS_ECLIPSE);
//パターンの作成
QbPattern dataPattern = new QbPattern(color[1]);
//画像の読み込み
File customImageFile = new File(“climb.png”);
try {
BufferedImage customImage = ImageIO.read(customImageFile);
//作成したパターンに画像を適用
dataPattern.setPatternImage(customImage);
} catch (IOException e1) { e1.printStackTrace();}
//colorに画像を適用
color[1]=dataPattern;
//色の設定
chart.gethDataPoints().setColors(color);

画像の反映が行えました。

タグ:

円グラフの開始位置と並び替えについて

円グラフEspressChartで作成した際にその順番はデータソースの並びに従い反時計回りに3時の位置から配置されます。これを時計回りに12時の位置から配置してみます。

まず開始位置を変更するためにはチャートオプションによって、この円グラフ自体を回転させる必要があります。

このあと時計回りに配置する必要がありますが、チャートデザイナからは直接指定できません。そのためチャートデザイナで擬似的に時計回りに配置するために、VALUESの昇順に順序を変更します。凡例での順序が意図しているものと違うため、凡例の順序の反転を設定します。

データソースの順序のまま時計回りに、配置する場合はAPIで設定を行う必要があります。開始位置の指定はチャートデザイナから設定してもかまいませんが、データソースの順序を反転し扱う指定はAPIでしか行えません。そしてデータポイントに対する指定であるため凡例側の順序は反転しません。

//開始位置を90度ずらす
IPiePropertySet PiePropaties = chart.gethPieProperties();
PiePropaties.setRotationAngle(90);

//登録されているデータの順序を逆順にする
IDataPointSet dataPoints = chart.gethDataPoints();
dataPoints.reverseOrder(QbChart.CATEGORY);

Weka(データマイニングツール)とEspressChartとの連携

Wekaはニュージーランドのワイカト大学において開発されたデータマイニングツールで,分類学習やクラスタリング,相関ルール生成のみならず,データの前処理や視覚化も含む統合型ツールです。Javaで記述されていて、それぞれの機能は他のツールとAPIやCLIを通して利用可能であるため,多くのツールでライブラリとして利用されています。

http://www.cs.waikato.ac.nz/ml/weka/

Weka自体にもグラフ出力機能がありますが、EspressChartと簡単なAPIを作成することにより、EspressChartのチャート機能を利用してWebベースのチャートへ展開することが可能になります。

次のチャートはWekaの標準偏差値ファンクション(平均値、中央値、最頻値)を使用してEspressChartでX軸をタイトルにして出力したものです。

タグ: ,