Jasper-reports-jasper-creating-charts
チャートを作成する
以前の人々は、スクリプトレットに依存してチャートデータを収集し、レポートテンプレートの画像要素を使用してチャートをレンダリングする必要がありました。 JasperReportsでは、新しいチャートコンポーネントを使用したチャートのサポートが組み込まれているため、簡単になりました。
ユーザーは新しいチャートコンポーネントを使用して、視覚的な設定のみを適用し、チャートデータセットの構築に役立つ式を定義する必要があります。 JasperReportsは、基になるチャートライブラリとしてJFreeChartを使用します。 新しいチャートコンポーネントを設定する場合、次の3つのコンポーネントが関係します-
- 全体的なチャートコンポーネント。
- チャートデータセット(チャートデータ関連の設定をグループ化)。
- チャートプロット(チャートアイテムのレンダリング方法に関連する視覚的な設定をグループ化します)。
JasperReportsは現在、円グラフ、円グラフ3D、棒グラフ、棒グラフ3D、XY棒グラフ、積み上げ棒グラフ、積み重ね棒グラフ3D、線、XY線、面、XY面、積み上げ面、散布図、バブル、時系列、高-低-開-閉、ローソク足、多軸、メーター、温度計、ガント。
チャートのプロパティ
チャートは通常のレポート要素なので、他のすべてのレポート要素とプロパティの一部を共有します。 すべてのタイプのチャートを作成するために使用される、<* chart *>と呼ばれるJRXML要素があります。 この要素は、すべてのタイプのチャートに適用される特別なチャート固有の設定をグループ化します。
グラフのサブ要素
<chart>要素のサブ要素は-
- <reportElement> -これらは、レポートテンプレートセクションに配置する静的テキスト、テキストフィールド、画像、線、長方形などの表示可能なオブジェクトです。
- <Box> -この要素は、各辺でカスタマイズ可能な境界線でチャートを囲むために使用されます。
- <chartTitle> -この要素は、チャートのタイトルを配置するために使用されます。 position_属性は、レポート内のチャートのタイトル位置を決定します。 この要素には属性があります-位置(値は_Top _、 Bottom 、 Left 、 Right_です。 デフォルト値は_Top _)、 color です。 <chartTitle>には、サブ要素として_font_と_titleExpression_があります。
- <chartSubtitle> -この要素は、チャートのサブタイトルを配置するために使用されます。 この要素には属性- color があります。 <chartSubtitle>には、_font_と_subtitleExpression_がサブ要素としてあります。
- <chartLegend> -要素は、この要素を使用して、グラフの凡例のテキスト色と背景色だけでなく、フォント関連のプロパティも制御できます。 この要素には、 textColor および backgroundColor という属性があります。
- <anchorNameExpression> -この要素は、アンカーのターゲットを作成します。
- <hyperlinkReferenceExpression> -この要素には、外部リソース(通常はURL)の名前を示すレポート式が含まれます。
- <hyperlinkAnchorExpression> -ハイパーリンクは外部リソースのアンカーを指します。
- <hyperlinkPageExpression> -ハイパーリンクは現在のレポートのページを指します。
- <hyperlinkTooltipExpression> -この要素は、ハイパーリンクのツールチップを制御します。 式のタイプは_java.lang.String_である必要があります。
- <hyperlinkParameter> -この要素が存在する場合、パラメータ値に応じて最終的なハイパーリンクが生成されます。
チャート属性
すべてのチャートタイプで使用可能な<chart>要素の属性は次のとおりです-
- isShowLegend -この属性は、グラフの凡例をレポートに表示するかどうかを決定するために使用されます。 値は_true_または_false_です。 デフォルト値は_true_です。
- evaluationTime -チャートの式がいつ評価されるかを決定します。 値は、Now _、 Report 、 Page 、 Column 、 Group 、 Band_です。 デフォルト値は_Now_です。
- evaluationGroup -この属性は、チャートの式を評価するために使用されるグループの名前を決定します。 この属性の値は、グループの名前と一致する必要があります。チャートの評価グループとして使用します。
- hyperlinkType -この属性は任意のテキスト値を保持できます。 デフォルト値は_None_です。 つまり、特殊なハイパーリンク式が存在する場合でも、テキストフィールドも画像もハイパーリンクを表しません。
- hyperlinkTarget -この属性は、ビューアでクリックされたときに指定されたリンクの動作をカスタマイズするのに役立ちます。 値は_Self_または_Blank_の場合があります。 デフォルト値は_Self_です。
- bookmarkLevel -この属性を正の整数に設定すると、PDFにエクスポートされたレポートにブックマークが生成されます。 デフォルト値は_0_です。
- customizerClass -これは、チャートのカスタマイズに使用できるクラスの名前(オプション)です。 この要素の値は、カスタマイザークラスの名前を含む文字列でなければなりません。
チャートのカスタマイズ
前述のように、JasperReportsは_JFreeChart_を基になるグラフ作成ライブラリとして使用します。 _JFreeChart_には、JasperReportsで直接サポートされていない機能が含まれています。 <chart>要素の_customizerClass_属性を介してカスタマイザークラスを提供することにより、これらの機能を利用できます。 カスタマイザークラスは何でもありませんが、_net.sf.jasperreports.engine.JRChartCustomizer_インターフェースの実装です。 このインターフェースを実装する最も簡単な方法は、_net.sf.jasperreports.engine.JRAbstractChartCustomizer_クラスを拡張し、パラメーター、フィールド、および変数にアクセスして、レポートデータに基づいてより柔軟なチャートカスタマイズを行うことです。
チャートデータセット
すべてのチャートタイプに共通するプロパティの1つは、<* dataset *>要素です。 チャートデータセットは、レポートデータのマッピングと実行時のチャートデータの取得に役立ちます。 各チャートタイプには、チャートの式を定義するためのさまざまなサブ要素が含まれています。 これらの式は、チャートの生成に使用されるデータを定義します。 これらのサブ要素にはすべて、チャートの式が評価およびリセットされるタイミングを定義する<dataset>要素が含まれます。
JasperReportsでは、各タイプのチャートが特定のデータセット(円、カテゴリ、XY、時系列、期間、XYZ、高低)で動作するため、いくつかのタイプのチャートデータセットを使用できます。 これらの各データセットタイプは、チャートデータセットを定義する_net.sf.jasperreports.engine.JRChartDataset_インターフェイスを実装します。 すべてのチャートデータセットは、同じ方法で初期化および増分されます。ただし、マップするデータまたはデータ系列のタイプのみが異なります。
データセットのプロパティ
以下の表は、要素<dataset>の属性をまとめたものです-
Attribute | Description | Values |
---|---|---|
resetType | This attribute determines when the value of the chart expression is to be reset. | None, Report, Page, Column, Group. Default value is Report. |
resetGroup | This attribute determines the name of the group at which the chart expression value is reset. | The value for this attribute must match the name of any group declared in the JRXML report template. |
incrementType | This attribute determines when to recalculate the value of the chart expression. | None, Report, Page, Column, Group. Default value is "None". |
incrementGroup | This attribute determines the name of the group at which the chart expression is recalculated. | The value for this attribute must match the name of a group declared in the JRXML report template. |
次の表は、要素<dataset>のサブ要素をまとめたものです-
Sub element | Description |
---|---|
<incrementWhenExpression> | The way a chart dataset is incremented can be customized by filtering out unwanted data through the use of this sub element. |
<datasetRun> | This contains information required to instantiate a report subdataset. |
データセットの種類
特定のデータセットの種類は以下で説明されています-
パイデータセット
パイデータセットは、次の式によって特徴付けられます-
- <keyExpression>-円グラフのスライスを構成するカテゴリを表します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <valueExpression>-データセットの各カテゴリ/キーに対応する値を生成します。 値は常にjava.lang.Numberオブジェクトです。
- <labelExpression>-この式が欠落している場合、グラフには円グラフの各スライスのデフォルトラベルが表示されます。 java.lang.String値を返すこの式を使用して、円グラフのアイテムラベルをカスタマイズします。
- <sectionHyperlink>-パイセクションに関連付けられたハイパーリンクを設定します。
カテゴリデータセット
カテゴリデータセットは、以下を含む<categorySeries>要素によって特徴付けられます-
- <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <categoryExpression>-シリーズ式で指定されたシリーズ内の各値のカテゴリ名を返します。 カテゴリはjava.lang.Comparableオブジェクトです。
- <valueExpression>-データセットの各カテゴリに対応する値を生成します。 値は常にjava.lang.Numberオブジェクトです。
- <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
XYデータセット
XYデータセットは、以下を含む<xySeries>要素によって特徴付けられます-
- <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <xValueExpression>-現在のデータ系列に追加される(x、y)ペアのX値を表すjava.lang.Number値を返します。
- <yValueExpression>-現在のデータ系列に追加される(x、y)ペアのY値を表すjava.lang.Number値を返します。
- <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
XYZデータセット
XYZデータセットは、以下を含む<xyzSeries>要素によって特徴付けられます-
- <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <xValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのX値を表すjava.lang.Number値を返します。
- <yValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのY値を表すjava.lang.Number値を返します。
- <zValueExpression>-現在のデータ系列に追加される(x、y、z)アイテムのZ値を表すjava.lang.Number値を返します。
- <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
時系列データセット
時系列データセットは、timePeriod属性と<timeSeries>要素によって特徴付けられます。 timePeriod属性は、データセット内のデータ系列のタイプを指定します。 時系列には、日、月、年、またはその他の事前定義された期間に関連付けられた数値を含めることができます。 可能な値は次のとおりです。_年、四半期、月、週、日-これはデフォルト値です。時間、分、秒、ミリ秒。
<timeSeries>要素には次が含まれます-
- <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <timePeriodExpression>-上記のtimePeriod属性に設定された値に応じて、エンジンが対応する期間を抽出するjava.util.Date値を返します。
- <valueExpression>-データセットの現在のシリーズをインクリメントするときに、対応する期間値に関連付けるjava.lang.Number値を返します。
- <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
期間データセット
期間データセットは、<timePeriodSeries>要素によって特徴付けられます。
- <seriesExpression>-シリーズの名前を示します。 この式は、任意のjava.lang.Comparableオブジェクトを返すことができます。
- <startDateExpression>-数値が時系列に追加されるときに関連付けられる日付間隔の開始を指定します。
- <endDateExpression>-数値が時系列に追加されるときに関連付けられる日付間隔の終了を指定します。
- <valueExpression>-開始日および終了日の式で指定された現在の日付間隔に関連付けるjava.lang.Number値を返します。
- <labelExpression>-この式が欠落している場合、チャートはチャート内の各アイテムのデフォルトのラベルを表示します。 java.lang.String値を返すこの式を使用して、チャートのアイテムラベルをカスタマイズします。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
高低データセット
高低データセットは、次の式によって特徴付けられます-
- <seriesExpression>-現在、高低チャートまたはローソク足チャート内では1つのシリーズのみがサポートされています。 ただし、この単一のシリーズは、この式によって返されるjava.lang.Comparable値によって識別される必要があり、チャートの凡例のシリーズ名としても使用される必要があります。
- <dateExpression>-現在の(高、低、オープン、クローズ、ボリューム)アイテムが参照する日付を返します。
- <highExpression>-java.lang.Number値を返します。この値は、データセットが増分されると系列に追加されるデータ項目の一部になります。
- <lowExpression>-java.lang.Number値を返します。この値は、データセットが増分されると系列に追加されるデータ項目の一部になります。
- <openExpression>-java.lang.Number値を返します。この値は、データセットがインクリメントされるときに系列に追加されるデータ項目の一部になります。
- <closeExpression>-java.lang.Number値を返します。この値は、データセットがインクリメントされるときに系列に追加されるデータ項目の一部になります。
- <volumeExpression>-現在のデータ項目に使用するボリューム値を返す数値式。 ローソク足チャートにのみ使用されます。
- <itemHyperlink>-チャートアイテムに関連付けられたハイパーリンクを設定します。
値データセット
これは、単一の値を含む特別なチャートデータセットの実装であり、メーターおよび温度計チャートのレンダリングに使用されます。 値は、<valueExpression>式を使用して収集されます。
チャートプロット
すべてのチャートタイプで使用されるもう1つの一般的なJRXML要素は、<* plot *>要素です。 これにより、方向や背景色などのチャートのいくつかの特性を定義できます。 プロットは、チャートのタイプに基づいて異なります。
プロット属性
以下の表は、<plot>要素の属性をまとめたものです-
Attribute | Description | Values |
---|---|---|
backcolor | This attribute defines the chart’s background color. | Any six digit hexadecimal value is a valid value for this attribute. The hexadecimal value must be preceded by a #. |
orientation | This attribute defines the chart’s orientation. | Horizontal,Vertical Default value is "Vertical" |
backgroundAlpha | This attribute defines the transparency of the chart’s background color. | The valid values for this attribute include any decimal number between 0 and 1, inclusive. The higher the number, the less transparent the background will be. Default value is "1." |
foregroundAlpha | This attribute defines the transparency of the chart’s foreground colors. | The valid values for this attribute include any decimal number between 0 and 1, inclusive. The higher the number, the less transparent the background will be. Default value is "1." |
labelRotation | This attribute allows rotation of text labels on x-axis to rotate clockwise or anti-clockwise. This attribute applies only to charts for which the x axis is not numeric or does not display dates. | Default value is "0.0." |
<plot>要素には、サブ要素<seriesColor>があり、属性は_seriesOrder_および_color_です。 この要素は、シリーズの色と、色シーケンス内の位置をカスタマイズします。
チャートプロットの特定の設定
- piePlot -特定の設定はありません
- pie3DPlot -_depthFactor_属性、0〜1の範囲の数値を含み、円の深さをプロット領域の高さの割合として表します。
- barPlot -目盛りラベル、目盛りマークまたはアイテムラベルを表示または非表示にでき、両方の軸の設定を提供します。
- bar3DPlot -barPlotと同じ設定を提供し、xOffsetおよびyOffset属性を使用して3D効果を生成します。
- linePlot -アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
- scatterPlot -linePlotと同様に、アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
- areaPlot -両方の軸の設定を提供します。
- bubblePlot -scaleType属性を設定することでバブルの寸法を設定でき、両方の軸の設定を提供します。
- timeSeriesPlot -アイテムポイントを接続する線を表示または非表示にでき、アイテムポイントに関連付けられた形状を表示または非表示にでき、両方の軸の設定を提供します。
- highLowPlot -開いている目盛りを表示または非表示にすることができ、閉じた目盛りを表示または非表示にすることができ、両方の軸の設定を提供します。
- candlestickPlot -ボリュームを表示または非表示にすることができ、両方の軸の設定を提供します。
- meterPlot -ダイヤルの形状、スケール角度、測定単位、ティック間隔、ダイヤルの色、針の色、ティックの色、値の表示フォント、色とフォーマットパターン、データ範囲、メーター間隔の特定の設定が含まれています。
- thermometerPlot -値の場所、水銀の色、値の行の表示/非表示、値の表示フォント、色とフォーマットパターン、データ範囲、低範囲、中範囲、および高範囲の特定の設定が含まれます。
- multiAxisChart -プロットに含まれる軸の特定の設定が含まれています。
チャートの種類
JasperReportsは、いくつかのチャートタイプの組み込みサポートを提供します。 それらは以下のようにリストされています-
- pieChart -パイデータセットとパイプロットの組み合わせ。
- pie3DChart -PieデータセットとPie 3Dプロットをグループ化します。
- barChart -カテゴリデータセットと棒グラフの基本的な組み合わせ。
- bar3DChart -カテゴリデータセットと棒3Dプロットをラップします。
- xyBarChart -期間データセット、時系列データセット、XYデータセットをサポートし、棒グラフを使用して軸とアイテムをレンダリングします。
- stackedBarChart -カテゴリデータセットのデータを使用し、棒グラフを使用してそのコンテンツをレンダリングします。
- stackedBar3DChart -カテゴリデータセットのデータを使用し、Bar 3Dプロットを使用してそのコンテンツをレンダリングします。
- lineChart -カテゴリデータセットとラインプロットをグループ化します。
- xyLineChart -XYデータセットとラインプロットをグループ化します。
- areaChart -カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。
- stackedAreaChart -カテゴリデータセットのアイテムは、エリアプロットを使用してレンダリングされます。
- xyAreaChart -XYデータセットからのデータを使用し、エリアプロットを通してレンダリングします。
- scatterChart -散布図でXYデータセットをラップします。
- bubbleChart -XYZデータセットをバブルプロットと組み合わせます。
- timeSeriesChart -時系列データセットと時系列プロットをグループ化します。
- highLowChart -High-LowデータセットとHigh-Lowプロットの組み合わせ。
- candlestickChart -高低データセットからのデータを使用しますが、特別なローソク足プロットを使用します。
- meterChart -メータープロットのレンダリングオプションを使用して、ダイヤル上の値データセットから単一の値を表示します。
- thermometerChart -Thermometerプロットのレンダリングオプションを使用して、Valueデータセットの単一の値を表示します。
- multiAxisChart -複数の範囲軸が含まれ、すべてが共通のドメイン軸を共有しています。
例
チャートをデモンストレーションするために、新しいレポートテンプレート(jasper_report_template.jrxml)を作成しましょう。 ここでは、<* barChart >要素を<pageHeader>セクションに追加し、< pieChart >を<summary>セクションに追加します。 各被験者について得られたマークをチャートに表示します。 ディレクトリ *C:\ tools \ jasperreports-5.0.1 \ test に保存します。 ファイルの内容は以下のとおりです-
上記のファイルの詳細は以下のとおりです-
- 棒グラフの作成に使用されるJRXML要素は、<pageHeader>の</barChart>です。 これには、チャートの寸法と位置を定義する<reportElement>サブ要素を含む</chart>サブ要素が含まれます。
- 棒グラフの<dataset>要素は、<categoryDataset>と</categoryDataset>のJRXML要素で囲む必要があります。
- <categoryDataset>には<categorySeries>要素が含まれている必要があります。 この要素は、バーが表すデータ要素(この例ではサブジェクト名)を定義します。
- <categoryDataset>には、比較のためにデータをカテゴリに分割する方法を定義する要素も含める必要があります。 ここでは、データはサブジェクト名で区切られています。
- <valueExpression>要素は、チャート内の各バーの値を決定するために使用される式を定義します。 ここでは、「マーク」を使用しています。
- 円グラフでは、<summary>セクションの下の要素<pieChart>を使用しました。 </chart>サブ要素が含まれています。
- サブ要素には、チャートのキーとして使用するものを示すレポート式が含まれます。 ここでは、subjectNameを使用しました。
- サブ要素には、キーの値を計算するために使用される式が含まれます。 ここでは、マークを使用しました。
レポート入力のJavaコードは変更されません。 ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ JasperReportFill.java の内容は以下のとおりです-
各主題について取得したマークを表示するため、POJOを変更する必要があります。 ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ DataBean.java の内容は次のとおりです-
ファイル C:\ tools \ jasperreports-5.0.1 \ test \ src \ com \ finddevguides \ DataBeanList.java の内容でさえ、以下のように更新する必要があります-
レポート生成
次に、通常のANTビルドプロセスを使用して、上記のファイルをコンパイルして実行します。 ファイルbuild.xmlの内容(ディレクトリC:\ tools \ jasperreports-5.0.1 \ testに保存)は以下のとおりです。
インポートファイル-baseBuild.xmlは、チャプターリンク:/jasper_reports/jasper_environment_setup [Environment Setup]から取得され、build.xmlと同じディレクトリに配置する必要があります。
次に、コマンドラインウィンドウを開き、build.xmlが配置されているディレクトリに移動します。 最後に、次のようにコマンド ant -Dmain-class = com.finddevguides.JasperReportFill (viewFullReportがデフォルトのターゲットです)を実行します-
上記のコンパイルの結果、以下の画面のようにJasperViewerウィンドウが開きます-
ここでは、ページヘッダーに棒グラフが作成され、サマリーセクションに円グラフが作成されていることがわかります。