Jfreechart-quick-guide
JFreeChart-概要
チャートは、情報のグラフィカルな表現です。 さまざまな種類のグラフを作成するために使用できるさまざまなツールがあります。 JFreeChart プロジェクトは、2000年2月にDavid Gilbertによって設立されました。 現在、Java開発者の間で最も広く使用されているグラフ作成ライブラリです。
このチュートリアルは、JFreeChartが何であるか、なぜ必要なのか、Javaベースのアプリケーション内で、または独立してさまざまなタイプのチャートを作成するさまざまな方法を理解するのに役立ちます。
JFreeChartとは何ですか?
JfreeChartは、Javaで開発されたオープンソースライブラリです。 Javaベースのアプリケーション内で使用して、さまざまなグラフを作成できます。 JFreeChartを使用することにより、円グラフ、棒グラフ、折れ線グラフ、XYグラフ、3Dグラフなど、すべての主要な2Dおよび3Dグラフを作成できます。
JFreeChartを選ぶ理由
JFreeChartはオープンソースであり、100%無料であり、無料で商用アプリケーションで使用できます。 JFreeChartを使用する理由を支持して、ここにいくつかのポイントを追加しました-
- よく文書化されたAPIが付属しているため、非常に理解しやすくなっています。
- 円グラフ、折れ線グラフ、棒グラフ、面グラフ、立体グラフなど、さまざまな種類のグラフをサポートしています。
- JFreeChartは拡張が簡単で、クライアント側とサーバー側の両方のアプリケーションで使用できます。
- PNG、JPEG、PDF、SVGなどの複数の出力形式をサポートしています。
- チャートの広範なカスタマイズが可能です。
アプリケーションを開発していて、データをグラフ形式で表示する必要があり、データ自体が動的に取り込まれる状況を考えてください。 そのような場合、JFreeChartプログラミングを使用してグラフ形式でデータを表示するのは非常に簡単です。
JFreeChart-インストール
JFreeChartは、効率的なグラフ作成とユーザーフレンドリーなインストールセットアップで人気があります。 この章では、WindowsおよびLinuxでJFreeChartをセットアップするプロセスについて説明します。 JFreeChartのインストール中にユーザー管理が必要です。
システム要求
JDK | 1.5 or above |
Memory | 2GB RAM |
Disk Space | No minimum requirement |
*Operating System Version * | Linux or Windows |
JFreeChartのインストール
JFreeChartをインストールするには、次の3つのステップがあります…
ステップ1:Javaインストールの検証
Javaのインストールを確認するには、コンソールを開き、次のJavaコマンドを実行します-
Os | Task | Command |
---|---|---|
Windows | Open command console | C:>java -version |
Linux | Open command terminal | $java -version |
Javaのインストールが適切に完了したら、両方のオペレーティングシステムについて次の出力を取得する必要があります-
S.No | OS & Description |
---|---|
1 |
Javaバージョン "1.7.0_60" Java(TM)SEランタイム環境(ビルド1.7.0_60-b19)Java HotSpot(TM)64ビットサーバーVM(ビルド24.60-b09、混合モード) |
2 |
Linux Javaバージョン "1.7.0_25" OpenJDKランタイム環境(rhel2.3.10.4.el6_4-x86_64)OpenJDK 64ビットサーバーVM(ビルド23.7-b01、混合モード) |
Javaがインストールされていない場合は、リンクからJava Software Development Kit(SDK)をインストールします-
https://www.oracle.com/technetwork/java/javase/downloads/indexl
このチュートリアルに進む前に、Java 1.7.0_60バージョンをインストールしていることを前提としています。
ステップ2:JAVA環境の設定
*JAVA_HOME* 環境変数を設定して、Javaがマシンにインストールされているベースディレクトリの場所を指すようにします。 例えば、
S.No | Os & Description |
---|---|
1 |
Windows 環境変数JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します |
2 |
Linux エクスポートJAVA_HOME =/usr/local/java-current |
Javaコンパイラの場所をシステムパスに追加します。
S.No | OS & Description |
---|---|
1 |
Windows 文字列を追加します。 C:\ Program Files \ Java \ jdk1.7.0_60 \ binからシステム変数PATHの最後まで。 |
2 |
Linux export PATH = $ PATH:$ JAVA_HOME/bin/ |
上記のプロンプトに従って、コマンド java -version を確認します。
ステップ3:JFreeChartのインストール
リンクhttp://www.jfree.org/jfreechart/download/からJFreeChart.zipの最新バージョンをダウンロードします。ダウンロードしたファイルを、必要なライブラリをJavaプログラムにリンクできる任意の場所で解凍します。 次の画像は、ディレクトリとファイルの構造を示しています-
以下に示すように、CLASSPATHにjfreechart-1.0.18.jarおよびjcommon-1.0.22.jarファイルの完全なパスを追加します-
S.No | OS & Description |
---|---|
1 |
Windows 文字列「C:\ jfreechart-1.0.18 \ lib \ jfreechart-1.0.18.jar」および「C:\ jfreechart-1.0.18 \ lib \ jcommon-1.0.22.jar」をユーザーの末尾に追加します変数CLASSPATH |
2 |
Linux エクスポートCLASSPATH = $ CLASSPATH:/usr/share/jfreechart1.0.18/lib/jfreechart-1.0.18.jar:/usr/share/jfreechart-1.0.18/lib/jcommon1.0.22.jar |
注意-MySqlデータベースと通信するには、クラスパスも mysql-connector-java-5.0.8-bin.jar に設定する必要があります。
JFreeChart-アーキテクチャ
この章では、JFreeChartの基本的なクラスレベルおよびアプリケーションレベルのアーキテクチャについて説明し、JFreeChartがさまざまなクラスとどのようにやり取りし、Javaベースのアプリケーションにどのように適合するかについて説明します。
クラスレベルのアーキテクチャ
クラスレベルのアーキテクチャは、ライブラリのさまざまなクラスが相互作用してさまざまな種類のグラフを作成する方法を説明します。
上記は、上記のブロック図で使用されるユニットの詳細です-
S.No | Units & Description |
---|---|
1 |
File ファイルにデータセットを作成するために使用されるユーザー入力を持つソース。 |
2 |
Database データベースにデータセットを作成するために使用されるユーザー入力を持つソース。 |
3 |
Create Dataset データセットを受け入れ、データセットをデータセットオブジェクトに保存します。 |
4 |
General Dataset このタイプのデータセットは、主に円グラフに使用されます。 |
5 |
Category Dataset このタイプのデータセットは、棒グラフ、折れ線グラフなどに使用されます。 |
6 |
Series Dataset このタイプのデータセットは、一連のデータを保存し、折れ線グラフを作成するために使用されます。 |
7 |
Series Collection Dataset シリーズデータセットのさまざまなカテゴリがシリーズコレクションデータセットに追加されます。 このタイプのデータセットは、XYLineチャートに使用されます。 |
8 |
Create Chart これは、最終的なチャートを作成するために実行されるメソッドです。 |
9 |
Frame/Image チャートがSwing Frameに表示されるか、画像が作成されます。 |
アプリケーションレベルのアーキテクチャ
アプリケーションレベルのアーキテクチャは、Javaアプリケーション内のJFreeChartライブラリの場所を説明します。
JFreeChart Application Level Architecture
クライアントプログラムはユーザーデータを受信し、要件に基づいて標準のJavaおよびJFreeChart APIを使用して、フレームの形式で出力を生成します。フレームは、アプリケーション内で直接表示するか、JPEGやPNGなどの画像形式で個別に表示できます。
JFreeChart-参照されたAPI
この章では、JFreeChartライブラリの重要なパッケージ、クラス、およびメソッドのいくつかについて説明します。 これらのパッケージ、クラス、およびメソッドは、JFreeChartライブラリを使用してさまざまなチャートを作成する際に最も頻繁に使用されます。
ChartFactoryクラス
ChartFactoryは org.jfree.chart パッケージの下にある抽象クラスです。 標準チャートを生成するためのユーティリティメソッドのコレクションを提供します。
以下は重要な方法のいくつかのリストです-
クラスコンストラクター
S.No | Description |
---|---|
1 |
ChartFactory() ChartFactoryクラスのデフォルトコンストラクター。 |
クラスメソッド
S.No | Methods & Description |
---|---|
1 |
createPieChart(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls) このメソッドは、デフォルト設定で円グラフを作成します。 JfreeChart型のオブジェクトを返します。 |
2 |
createPieChart3D(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls このメソッドは、指定されたデータセットを使用して3D円グラフを作成します。 |
3 |
createBarChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) 引数java.lang.String categoryAxisLabelは、X軸に配置される値のラベルです。 引数java.lang.String valueAxisLabelは、Y軸に配置される値のラベルです。 このメソッドは棒グラフを作成します。 |
4 |
createBarChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) このメソッドは、3D効果を持つ棒グラフを作成します。 JfreeChart型のオブジェクトを返します。 |
5 |
createLineChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) このメソッドは、デフォルト設定で折れ線グラフを作成します。 |
6 |
createLineChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) このメソッドは、3D効果を持つ折れ線グラフを作成します。 |
7 |
createXYLineChart(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, XYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) このメソッドは、デフォルト設定のXYDatasetに基づいて折れ線グラフを作成します。 |
ChartFrameクラス
org.jfree.chartパッケージの下のChartFrameクラスは、すべてのフレーム関連の機能とユーティリティを提供します。 ChartFrameクラスは、Frame、Window、Container、Componentクラスなどの親クラスから機能を継承します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
ChartFrame (java.lang.Frame String, JfreeChart chart) フレームを構築します。 |
2 |
Chart Frame (java.lang.Frame String, JfreeChart chart, boolean scrollpane) フレームを構築します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
getChartPanel() このメソッドは、フレームのチャートパネルを返します。 |
ChartPanelクラス
*org.jfree.chart* パッケージのChartPanelクラスは、JfreeChartオブジェクトを表示するためのスイングGUIコンポーネントとして使用されます。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
ChartPanel(JFreeChart chart) このコンストラクターは、指定されたチャートを表示するパネルを構築します。 |
2 |
ChartPanel(JFreeChart chart, boolean useBuffer) このコンストラクターは、チャートを含むパネルを構築します。 |
3 |
ChartPanel(JFreeChart chart, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips) このコンストラクタは、JFreeChartパネルを構築します。 |
クラスメソッド
S.No
方法と説明
1
- setPreferredSize(java.awt.Dimension)*
このメソッドは、java.awtを使用してフレームサイズを設定するために使用されます。 引数としてのディメンションクラスオブジェクト。 このメソッドはjavax.swing.JComponentから取得されます。
ChartUtilitiesクラス
*org.jfree.chart* パッケージのCharUtilitesクラスは、チャートをPNG、JPEGなどの画像ファイル形式に変換したり、HTMLイメージマップを作成したりするメソッドを含む、JFreeChartsのユーティリティメソッドのコレクションを提供します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
ChartUtilities() これはクラスのデフォルトコンストラクターです |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
saveChartAsPNG(java.io.File file, JfreeChart chart, int width, int height) このメソッドは、グラフを変換して、指定されたファイルにPNG形式で保存します。 |
2 |
saveChartAsJPEG(java.io.File file, JfreeChart chart, int width, int height) このメソッドは、チャートを変換し、指定されたファイルにJPEG形式で保存します。 |
JFreeChartクラス
JFreeChartクラスは、 org.jfree.chart パッケージの下のコアクラスです。 このクラスは、棒グラフ、折れ線グラフ、円グラフ、および時系列データを含むxyプロットを作成するJFreeChartメソッドを提供します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
JfreeChart(Plot plot) このコンストラクターは、指定されたプロットに基づいて新しいチャートを作成します。 |
2 |
JfreeChart(java.lang.String title, java.awt.Font titleFont, Plot plot, boolean createLegend) このコンストラクターは、指定されたタイトルとプロットで新しいチャートを作成します。 |
3 |
JfreeChart(java.lang.String title, Plot plot) このコンストラクターは、指定されたタイトルとプロットで新しいチャートを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
getXYPlot() このメソッドは、プロットチャートを XYPlot として返します。 XYPoltを使用すると、xyチャートでいくつかのユーティリティ操作を実行できます。 |
PiePlotクラス
このクラスは org.jfree.chart.plot パッケージの一部であり、同じパッケージのPlotクラスを拡張します。 このクラスは、円グラフを作成するメソッドを提供します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
PiePlot() 新しいプロットを作成します。 |
2 |
PiePlot(PieDataset dataset) 指定したデータセットの円グラフを描くプロットを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
setStartAngle(double angle) このメソッドは開始角度を設定し、PlotChangeEventをすべての登録済みリスナーに送信します |
PiePlot3Dクラス
PiePlot3Dクラスは、同じパッケージの下にあるPiePlotクラスのサブクラスです。 したがって、このクラスにはPiePlotクラスと同じ機能がありますが、3Dプロットの作成に使用されます。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
PiePlot3D() このコンストラクターは、データセットなしで新しいインスタンスを作成します。 |
2 |
PiePlot3D(PieDataset dataset) このコンストラクターは、指定されたデータセットを使用して3次元効果のある円グラフを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
setForegroundAlpha(float alpha) プロットのアルファ透明度を設定し、登録されているすべてのリスナーにPlotChangeEventを送信します。 これは、親Plotクラスの1つから取得されます。 |
2 |
setInteriorGap(double percent) 内部ギャップを設定し、PlotChangeEventをすべての登録済みリスナーに送信します。 これは、円グラフの端とプロット領域自体の間のスペースを制御します(i。 e。、セクションラベルが表示される領域)。 このメソッドは、親クラスPiePlotから取得されます。 |
PlotOrientationクラス
これは org.jfree.chart.plot パッケージで利用可能なシリアル化されたクラスであり、2Dプロットの方向を示すために使用されます。 向きは vertical または horizontal のいずれかです。 Y軸の方向を設定します。 従来のプロットには垂直のY軸があります。
フィールド概要
S.No | Type | Field & Description |
---|---|---|
1 | PlotOrientation | HORIZONTAL For a plot where the range axis(Y-axis) is horizontal. |
2 | PlotOrientation | *VERTICAL *For a plot where the range axis(Y-axis) is vertical. This is the default orientation. |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
この方向がHORIZONTALの場合、このメソッドはtrueを返し、そうでない場合はfalseを返します。 |
2 |
isVertical() この方向は、この方向が垂直の場合はtrueを返し、そうでない場合はfalseを返します。 |
XYPlotクラス
これは org.jfree.chart.plot パッケージで利用可能な一般クラスであり、(x、y)ペアの形式でデータをプロットするために使用されます。 このプロットでは、XYDataSetインターフェイスを実装する他のクラスのデータを使用できます。 XYPlotは、XYItemRendererを使用して、プロット上の各ポイントを描画します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
XYPlot() この請負業者は、データセット、軸、レンダラーを持たない新しいXYPlotインスタンスを作成します。 |
2 |
XYPlot(XYDataset dataset, ValueAxis *domainAxis, ValueAxis rangeAxis, XYItemRenderer *renderer) このコンストラクターは、指定されたデータセット、軸、およびレンダラーで新しいプロットを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
このメソッドは、プライマリデータセットのレンダラーを設定し、変更イベントをすべての登録済みリスナーに送信します。 |
NumberAxisクラス
このクラスは org.jfree.chart.axis パッケージで利用でき、任意の軸の数値データにアクセスできます。 軸の範囲をデフォルトに設定すると、データの範囲に応じて適合します。 ただし、NumberAxisクラスを使用すると、ドメイン軸と範囲軸の下マージンと上マージンを設定できます。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
NumberAxis( ) これは、NumberAxisのデフォルトコンストラクターです。 |
2 |
NumberAxis( java.lang.String label) コンストラクターNumberAxisは、必要に応じてデフォルト値を使用します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
setLowerMargin(double margin) 軸の下マージンを(軸範囲の割合として)設定し、 AxisChangeEvent をすべての登録済みリスナーに送信します。 このメソッドは、ValueAxisクラスの親クラスから取得されます。 |
2 |
setUpperMargin(double margin) 軸の上マージンを(軸範囲の割合として)設定し、 AxisChangeEvent をすべての登録済みリスナーに送信します。 このメソッドは、ValueAxisクラスにも存在します。 |
XYLineAndShapeRendererクラス
これは org.jfree.chart.renderer.xy パッケージで利用可能なクラスで、データポイントを線でつなぎ、各データポイントに形状を描画します。 このレンダラークラスは、 XYPlot クラスで使用するために設計されています。
クラスコンストラクター
S.No | Constructor & Description |
---|---|
1 |
XYLineAndShapeRenderer() 線と図形の両方が表示された新しいレンダラーを作成します。 |
2 |
特定のプロパティを持つ新しいレンダラーを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
このメソッドは、シリーズに使用されるペイントを設定し、登録済みのすべてのリスナーに RendererChangeEvent を送信します。 このメソッドは、JFreeChart APIのレンダラーパッケージのAbstratRenderer抽象クラスから取得されます。 |
2 |
setSeriesStroke(int series, java.awt.Stroke stroke) このメソッドは、シリーズに使用されるストロークを設定し、 RendererChangeEvent をすべての登録済みリスナーに送信します。 このメソッドは、このパッケージのスーパークラスであるAbstratRenderer抽象クラスから取得されます。 |
XYItemRendererの一般的なデータセット
これは、XYPlotで単一(x、y)アイテムのフォーマットをレンダリングするためのインターフェースです。 パッケージは org.Jfree.data.general であり、チャートを構築するためにさまざまなタイプのデータセットを定義するクラスとインターフェースがあります。
PieDataset
これは、値がキーに関連付けられている汎用データセットとして使用されるインターフェイスです。 名前が示すように、このデータセットを使用して円グラフのデータを提供できます。 このインターフェースは、KeyedValuesおよびDataSetインターフェースを拡張します。 このインターフェイスに使用されるすべてのメソッドは、KeyedValues、Values、およびDatasetインターフェイスから取得されます。
DefaultPieDatasetクラス
これは、PieDatasetインターフェースのデフォルト実装クラスです。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
DefaultPieDataset() このコンストラクターは、最初は空の新しいデータセットを作成します。 |
2 |
DefaultPieDataset(KeyedValues data)
|
クラスメソッド
S.No | Method & Description |
---|---|
1 |
setValue(java.lang.Comparable key, double value) キーのデータ値を設定し、登録済みのすべてのリスナーに DatasetChangeEvent を送信します。 |
2 |
setValue(java.lang.Comparable key, java.lang.Number value) キーのデータ値を設定し、登録済みのすべてのリスナーに DatasetChangeEvent を送信します。 |
SeriesExceptionクラス
これは例外クラスです。 データセットのデータの時系列で発生した例外を発生させます。 重複または無効なデータが発生すると、例外が発生します。 時系列は重複して適用されてはならず、形式は有効でなければなりません。
DefaultCategoryDataset
これは、CategoryDatasetインターフェースのデフォルトの実装クラスです。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
DefaultCategoryDataset() このコンストラクターは、新しい空のデータセットを作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
addValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) このメソッドは、比較可能なキーを使用してテーブルに値を追加します。 |
2 |
addValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) このメソッドは、テーブルに値を追加します。 |
3 |
setValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) このメソッドは、テーブル内の値を追加または更新し、 DatasetChangeEvent をすべての登録済みリスナーに送信します。 |
4 |
setValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) このメソッドは、テーブル内の値を追加または更新し、 DatasetChangeEvent をすべての登録済みリスナーに送信します。 |
他のさまざまなメソッドとフィールドの詳細については、JFreeChart APIを参照してください。
シリーズデータセット
シリーズデータセットはXYチャートで使用されます。 パッケージは org.Jfree.data.xy で、xyチャートに属するクラスとインターフェースが含まれています。 コアインターフェイスはXYDatasetです。
XYDataset
これは、(x、y)アイテムの形式のデータにアクセスできるインターフェイスです。 名前が示すように、このデータセットを使用してXYチャートを提供できます。 このインターフェイスのメソッドの一部は、SeriesDatesetインターフェイスから取得されます。
XYZDataset
これは、(x、y、z)アイテムの形式のデータにアクセスできるインターフェイスです。 名前が示すように、このデータセットを使用してXYZチャートを提供できます。 このインターフェイスのメソッドの一部は、SeriesDatesetから取得されます。
XYSeries
これはクラスであり、0個以上のデータ項目のシーケンスを(x、y)形式で表します。 デフォルトでは、シリーズ内のアイテムはx値で昇順にソートされ、重複するx値が許可されます。 ソートとデフォルトの複製の両方は、コンストラクターで変更できます。 Y値は、欠損値を表すためにnullとして表すことができます。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
XYSeries(java.lang.Comparable key) このコンストラクターは、新しい空のシリーズを作成します。 |
2 |
XYSeries(java.lang.Comparable key, boolean autoSort) 要求に応じて自動ソートフラグを設定して、新しい空のシリーズを作成し、値の重複を許可します。 |
3 |
XYSeries(java.lang.Comparable key, boolean autoSort, boolean allowDuplicateXValues) データを含まない新しいxyシリーズを構築します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
add(double x, double y) このメソッドは、データアイテムをシリーズに追加します。 |
上記の方法は、チュートリアルの例で使用されています。 残りのメソッドとフィールドを学習したい場合は、JFreeChart APIを参照してください。
XYSeriesCollection
XYSeriesCollectionクラスには、AbstractIntervelDataset、AbstractXYDatset、AbstractSeriesDataset、AbstractDatasetなどの親クラスがあります。 このクラスのメソッドの一部は、このクラスの親クラスに属します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
XYSeriesCollection() 空のデータセットを構築します。 |
2 |
XYSeriesCollection(XYSeries xyseries) データセットを構築し、単一のシリーズでデータを設定します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
addSeries(XYSeries series) このメソッドは、コレクションにシリーズを追加し、 DatasetChangeEvent をすべての登録済みリスナーに送信します。 |
残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
デフォルトのXYZDataset
DefaultXYZDatasetクラスには、AbstractIntervelDataset、AbstractXYDatset、AbstractSeriesDataset、AbstractDataset、AbstractXYZDatasetなどの親クラスがあります。 このクラスのメソッドの一部は、このクラスの親クラスに属します。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
DefaultXYZDataset() 空のデータセットを構築します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
addSeries(java.lang.Comparable seriesKey, double[ ][ ] data ) このメソッドは、コレクションにシリーズを追加し、 DatasetChangeEvent をすべての登録済みリスナーに送信します。 |
残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
JFreeChartsの時系列
パッケージは org.jfree.data.time です。 このパッケージには、時間関連データに使用されるクラスとインターフェースが含まれています。
時系列
このクラスは、期間値の形式でデータ項目のシーケンスを表します。期間は、Time、Day、Hour、Minute、SecondクラスなどのRegularTimePeriod抽象クラスのインスタンスです。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
TimeSeries(java.lang.Comparable name) 新しい空のシリーズを作成します。 |
2 |
TimeSeries(java.lang.Comarable name, java.lang.String domain, java.lang.Strin range) データを含まない新しい時系列を作成します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
add(RegularTimePeriod period,double value) このメソッドは、新しいデータ項目をシリーズに追加します。 |
残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
TimeSeriesCollection
これは、時系列オブジェクトのコレクションとして使用されるクラスです。 このクラスは、XYDatasetインターフェイスを実装し、IntervelXYDatasetインターフェイスを拡張します。 これにより、シリーズデータオブジェクトの収集が便利になります。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
TimeSeriesCollection() デフォルトのタイムゾーンに関連付けられた空のデータセットを構築します。 |
2 |
デフォルトのタイムゾーンに関連付けられた単一のシリーズ(さらに追加可能)を含むデータセットを構築します。 |
3 |
特定のタイムゾーンに関連付けられた単一のシリーズ(さらに追加可能)を含むデータセットを構築します。 |
4 |
特定のタイムゾーンに関連付けられた空のデータセットを構築します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
addSeries(TimeSeries series) このメソッドは、コレクションにシリーズを追加し、 DatasetChangeEvent をすべての登録済みリスナーに送信します。 |
残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
第二
このクラスは、特定の日の秒を表します。 このクラスは不変です。これは、すべてのRegularTimePeriodサブクラスの要件です。
クラスコンストラクター
S.No | Constructor and Description |
---|---|
1 |
Second() システムの日付/時刻に基づいて、新しいSecondを構築します。 |
2 |
Second(java.util.Date time) 指定された日付/時刻とデフォルトのタイムゾーンから新しいインスタンスを構築します。 |
3 |
Second(java.util.Date time, java.util.TimeZone zone, java.util.Locale locale) 指定された時間とタイムゾーンに基づいて新しい秒を作成します。 |
4 |
Second(int second, int minute, int hour, int day, int month, int year 新しい秒を作成します。 |
5 |
Second(int second, Minute minute) 新しいSecondを構築します。 |
クラスメソッド
S.No | Method and Description |
---|---|
1 |
getSecond() 1分以内に秒を返します。 |
2 |
next() 現在の秒に続く秒を返します。 |
残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
JFreeChartsのフレーム
パッケージは org.jfree.ui です。 これは、JFreeChartのJCommons APIに属するパッケージです。 事前に構成されたチャートのフレームを作成するために使用されるユーティリティクラスが含まれています。
ApplicationFrame
これは、単純なアプリケーションのメインフレームを作成するための基本クラスです。 フレームはウィンドウを閉じるイベントをリッスンし、JVMをシャットダウンして応答します。 これは、小規模なデモアプリケーションには適しています。 エンタープライズアプリケーションの場合は、より堅牢なものを使用する必要があります。 このクラスの主要なコアメソッドは、Component、Container、Window、Frame、およびJframeクラスから取得されます。
クラスコンストラクター
S.No | Constructor & Description |
---|---|
1 |
ApplicationFrame(java.lang.String title) 文字列のタイトルでアプリケーションフレームを作成します。 |
このクラスは、AWTフレームの作成に役立ちます。 これが、このチュートリアルの例でこのクラスをスーパークラスとして使用する理由です。
親クラスから取得されるメソッドは、フレームを開く、フレームを閉じる、サイズを変更する、背景色または前景色を変更する、およびリスナーに使用されます。
製油所ユーティリティ
これは、ユーザーインターフェイスに関連するユーティリティメソッドのクラスコレクションです。
クラスメソッド
S.No | Method and Description |
---|---|
1 |
centerFrameOnScreen(java.awt.Window frame) 指定されたフレームを画面の中央に配置します。 |
上記の方法は、チュートリアルの例で使用されています。 残りのメソッドとフィールドについては、JFreeChart APIを参照してください。
JFreeChart-円グラフ
円グラフでは、各セクターの弧の長さは、それが表す量に比例します。 この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*円グラフ*を作成する方法を示します。
ビジネスデータ
次の例は、円グラフを使用したモバイル販売を示しています。 以下は、さまざまなモバイルブランドとその販売(1日あたりのユニット数)のリストです。
S.No | Mobile Brands | Sales (UNITS per day) |
---|---|---|
1 | Iphone 5S | 20 |
2 | Samsung Grand | 20 |
3 | MOTO G | 40 |
4 | Nokia Lumia | 10 |
AWTベースのアプリケーション
以下は、上記の情報を使用して円グラフを作成するコードです。 このコードは、AWTベースのアプリケーションに円グラフを埋め込むのに役立ちます。
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class PieChart_AWT extends ApplicationFrame {
public PieChart_AWT( String title ) {
super( title );
setContentPane(createDemoPanel( ));
}
private static PieDataset createDataset( ) {
DefaultPieDataset dataset = new DefaultPieDataset( );
dataset.setValue( "IPhone 5s" , new Double( 20 ) );
dataset.setValue( "SamSung Grand" , new Double( 20 ) );
dataset.setValue( "MotoG" , new Double( 40 ) );
dataset.setValue( "Nokia Lumia" , new Double( 10 ) );
return dataset;
}
private static JFreeChart createChart( PieDataset dataset ) {
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", //chart title
dataset, //data
true, //include legend
true,
false);
return chart;
}
public static JPanel createDemoPanel( ) {
JFreeChart chart = createChart(createDataset( ) );
return new ChartPanel( chart );
}
public static void main( String[ ] args ) {
PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );
demo.setSize( 560 , 367 );
RefineryUtilities.centerFrameOnScreen( demo );
demo.setVisible( true );
}
}
上記のJavaコードを PieChart_AWT.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac PieChart_AWT.java
$java PieChart_AWT
すべてがうまくいけば、コンパイルして実行し、次の円グラフを生成します-
アプリケーションにチャートを埋め込む必要がない場合は、コマンドプロンプトでチャートイメージを作成できます。 JFreeChartでは、グラフ画像をJPGまたはPNG形式で保存できます。
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。 以下は、JFreeChartライブラリによって提供される2つのAPIです。これらを使用して、要件に応じてPNGまたはJPEGイメージを生成できます。
- * saveChartAsPNG()*-画像をPNG形式で保存するAPI。
- * saveChartAsJPEG()*-JPEG形式で画像を保存するAPI。
import java.io.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieChart {
public static void main( String[ ] args ) throws Exception {
DefaultPieDataset dataset = new DefaultPieDataset( );
dataset.setValue("IPhone 5s", new Double( 20 ) );
dataset.setValue("SamSung Grand", new Double( 20 ) );
dataset.setValue("MotoG", new Double( 40 ) );
dataset.setValue("Nokia Lumia", new Double( 10 ) );
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", //chart title
dataset, //data
true, //include legend
true,
false);
int width = 640; /*Width of the image*/
int height = 480; /*Height of the image*/
File pieChart = new File( "PieChart.jpeg" );
ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
}
}
上記のJavaコードを PieChart.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac PieChart.java
$java PieChart
すべて問題なければ、コンパイルして実行し、 PieChart.jpeg という名前のJPEGイメージファイルを現在のディレクトリに作成します。
JFreeChart-棒グラフ
この章では、JFreeChartを使用して、特定のビジネスデータのセットから*棒グラフ*を作成する方法を示します。
棒グラフでは、さまざまな方向(水平または垂直)の棒を使用して、さまざまなカテゴリの比較を表示します。 チャートの1つの軸(ドメイン軸)は比較される特定のドメインを示し、他の軸(範囲軸)は離散値を表します。
ビジネスデータ
次の例では、棒グラフを使用してさまざまな車の統計情報を示しています。 以下は、さまざまな特性とともに自動車ブランドのリストであり、棒グラフを使用して表示します-
Car | Speed | User Rating | Millage | Safety |
---|---|---|---|---|
Fiat | 1.0 | 3.0 | 5.0 | 5.0 |
Audi | 5.0 | 6.0 | 10.0 | 4.0 |
Ford | 4.0 | 2.0 | 3.0 | 6.0 |
AWTベースのアプリケーション
上記の情報から棒グラフを作成するコードは次のとおりです。 このコードは、AWTベースのアプリケーションに棒グラフを埋め込むのに役立ちます。
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BarChart_AWT extends ApplicationFrame {
public BarChart_AWT( String applicationTitle , String chartTitle ) {
super( applicationTitle );
JFreeChart barChart = ChartFactory.createBarChart(
chartTitle,
"Category",
"Score",
createDataset(),
PlotOrientation.VERTICAL,
true, true, false);
ChartPanel chartPanel = new ChartPanel( barChart );
chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private CategoryDataset createDataset( ) {
final String fiat = "FIAT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String millage = "Millage";
final String userrating = "User Rating";
final String safety = "safety";
final DefaultCategoryDataset dataset =
new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fiat , speed );
dataset.addValue( 3.0 , fiat , userrating );
dataset.addValue( 5.0 , fiat , millage );
dataset.addValue( 5.0 , fiat , safety );
dataset.addValue( 5.0 , audi , speed );
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , millage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , millage );
dataset.addValue( 6.0 , ford , safety );
return dataset;
}
public static void main( String[ ] args ) {
BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics",
"Which car do you like?");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
上記のJavaコードを BarChart_AWT.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac BarChar_AWT.java
$java BarChart_AWT
すべてがうまくいけば、コンパイルして実行し、次の棒グラフを生成します-
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;
public class BarChart {
public static void main( String[ ] args )throws Exception {
final String fiat = "FIAT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String millage = "Millage";
final String userrating = "User Rating";
final String safety = "safety";
final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fiat , speed );
dataset.addValue( 3.0 , fiat , userrating );
dataset.addValue( 5.0 , fiat , millage );
dataset.addValue( 5.0 , fiat , safety );
dataset.addValue( 5.0 , audi , speed );
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , millage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , millage );
dataset.addValue( 6.0 , ford , safety );
JFreeChart barChart = ChartFactory.createBarChart(
"CAR USAGE STATIStICS",
"Category", "Score",
dataset,PlotOrientation.VERTICAL,
true, true, false);
int width = 640; /*Width of the image*/
int height = 480; /*Height of the image*/
File BarChart = new File( "BarChart.jpeg" );
ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
}
}
上記のJavaコードをBarChart.javaファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac BarChart.java
$java BarChart
すべてが正常であれば、コンパイルして実行され、現在のディレクトリに BarChart.jpeg という名前のJPEG画像ファイルが作成されます。
JFreeChart-折れ線グラフ
折れ線グラフまたは折れ線グラフは、直線セグメントで接続された一連のデータポイント(マーカー)として情報を表示します。 折れ線グラフは、同じ時間頻度でデータがどのように変化するかを示しています。
この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*折れ線グラフ*を作成する方法を示します。
ビジネスデータ
次の例では、折れ線グラフを描画して、1970年から始まるさまざまな年に開かれた学校の数の傾向を示しています。
与えられたデータは次のとおりです-
Year | Number OF Schools |
---|---|
1970 | 15 |
1980 | 30 |
1990 | 60 |
2000 | 120 |
2013 | 240 |
2014 | 300 |
AWTベースのアプリケーション
以下は、上記の情報から折れ線グラフを作成するコードです。 このコードは、AWTベースのアプリケーションに折れ線グラフを埋め込むのに役立ちます。
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart_AWT extends ApplicationFrame {
public LineChart_AWT( String applicationTitle , String chartTitle ) {
super(applicationTitle);
JFreeChart lineChart = ChartFactory.createLineChart(
chartTitle,
"Years","Number of Schools",
createDataset(),
PlotOrientation.VERTICAL,
true,true,false);
ChartPanel chartPanel = new ChartPanel( lineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private DefaultCategoryDataset createDataset( ) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 15 , "schools" , "1970" );
dataset.addValue( 30 , "schools" , "1980" );
dataset.addValue( 60 , "schools" , "1990" );
dataset.addValue( 120 , "schools" , "2000" );
dataset.addValue( 240 , "schools" , "2010" );
dataset.addValue( 300 , "schools" , "2014" );
return dataset;
}
public static void main( String[ ] args ) {
LineChart_AWT chart = new LineChart_AWT(
"School Vs Years" ,
"Numer of Schools vs years");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
上記のJavaコードを LineChart_AWT.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac LineChart_AWT.java
$java LineChart_AWT
すべてがうまくいけば、コンパイルして実行し、次の折れ線グラフを生成します-
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。
import java.io.*;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart {
public static void main( String[ ] args ) throws Exception {
DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
line_chart_dataset.addValue( 15 , "schools" , "1970" );
line_chart_dataset.addValue( 30 , "schools" , "1980" );
line_chart_dataset.addValue( 60 , "schools" , "1990" );
line_chart_dataset.addValue( 120 , "schools" , "2000" );
line_chart_dataset.addValue( 240 , "schools" , "2010" );
line_chart_dataset.addValue( 300 , "schools" , "2014" );
JFreeChart lineChartObject = ChartFactory.createLineChart(
"Schools Vs Years","Year",
"Schools Count",
line_chart_dataset,PlotOrientation.VERTICAL,
true,true,false);
int width = 640; /*Width of the image*/
int height = 480; /*Height of the image*/
File lineChart = new File( "LineChart.jpeg" );
ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
}
}
上記のJavaコードを LineChart.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac LineChart.java
$java LineChart
すべて問題なければ、コンパイルして実行し、 LineChart.jpeg という名前のJPEGイメージファイルを現在のディレクトリに作成します。
JFreeChart-XYチャート
XYチャート(散布図)は、X値とY値のリストで構成される1つのデータ系列に基づいています。 各値ペア(X、Y)は座標系のポイントです。 ここで、1つの値は水平(X)位置を決定し、もう1つの値は垂直(Y)位置を決定します。 この章では、JFreeChartを使用して、ビジネスデータの特定のセットから* XYチャート*を作成する方法を示します。
ビジネスデータ
すべての主要なブラウザーのXYチャートを作成する例を考えてみましょう。 ここでは、以下に示すように、さまざまなカテゴリの人々からさまざまなパフォーマンススコアが収集されます-
*Firefox*
カテゴリー(X)
スコア(Y)
1.0
1.0
2.0
4.0
3.0
3.0
クロム
カテゴリー(X)
スコア(Y)
1.0
4.0
2.0
5.0
3.0
6.0
IE
カテゴリー(X)
スコア(Y)
3.0
4.0
4.0
5.0
5.0
4.0
AWTベースのアプリケーション
以下は、上記の情報からXYチャートを作成するコードです。 このコードは、AWTベースのアプリケーションにXYチャートを埋め込むのに役立ちます。
import java.awt.Color;
import java.awt.BasicStroke;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
public class XYLineChart_AWT extends ApplicationFrame {
public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
super(applicationTitle);
JFreeChart xylineChart = ChartFactory.createXYLineChart(
chartTitle ,
"Category" ,
"Score" ,
createDataset() ,
PlotOrientation.VERTICAL ,
true , true , false);
ChartPanel chartPanel = new ChartPanel( xylineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
final XYPlot plot = xylineChart.getXYPlot( );
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesPaint( 1 , Color.GREEN );
renderer.setSeriesPaint( 2 , Color.YELLOW );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
plot.setRenderer( renderer );
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );
return dataset;
}
public static void main( String[ ] args ) {
XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
"Which Browser are you using?");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
上記のJavaコードを XYLineChart_AWT.java ファイルに保持し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac XYLineChart_AWT.java
$java XYLineChart_AWT
すべてがうまくいけば、コンパイルして実行し、次のXYグラフを生成します-
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities;
public class XYLineChart_image {
public static void main( String[ ] args )throws Exception {
final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );
JFreeChart xylineChart = ChartFactory.createXYLineChart(
"Browser usage statastics",
"Category",
"Score",
dataset,
PlotOrientation.VERTICAL,
true, true, false);
int width = 640; /*Width of the image*/
int height = 480; /*Height of the image*/
File XYChart = new File( "XYLineChart.jpeg" );
ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);
}
}
上記のJavaコードを XYLineChart_image.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac XYLineChart_image.java
$java XYLineChart_image
すべてが正常であれば、コンパイルして実行し、現在のディレクトリに XYLineChart.jpeg という名前のJPEGイメージファイルを作成します。
JFreeChart-3D円/棒グラフ
3Dグラフは、3次元形式で表示されるものです。 これらのチャートを使用して、より良い表示と明確な情報を提供できます。 3D円グラフは円グラフと同じですが、3D効果もあります。 少し余分なコードを追加することで3D効果を実現できます。これにより、円グラフで3D効果を作成できます。
3D円グラフ
3D円グラフを使用してモバイル販売を説明する次の例を検討してください。 以下は、さまざまなモバイルブランドとその販売(1日あたりのユニット数)のリストです。
S.No | Mobile Brands | Sales (UNITS per day) |
---|---|---|
1 | Iphone 5S | 20 |
2 | Samsung Grand | 20 |
3 | MOTO G | 40 |
4 | Nokia Lumia | 10 |
以下は、上記の情報から3D円グラフを作成するコードです。 このコードは、AWTベースのアプリケーションに円グラフを埋め込むのに役立ちます。
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.ChartUtilities;
public class PieChart3D {
public static void main( String[ ] args )throws Exception {
DefaultPieDataset dataset = new DefaultPieDataset( );
dataset.setValue( "IPhone 5s" , new Double( 20 ) );
dataset.setValue( "SamSung Grand" , new Double( 20 ) );
dataset.setValue( "MotoG" , new Double( 40 ) );
dataset.setValue( "Nokia Lumia" , new Double( 10 ) );
JFreeChart chart = ChartFactory.createPieChart3D(
"Mobile Sales" , //chart title
dataset , //data
true , //include legend
true,
false);
final PiePlot3D plot = ( PiePlot3D ) chart.getPlot( );
plot.setStartAngle( 270 );
plot.setForegroundAlpha( 0.60f );
plot.setInteriorGap( 0.02 );
int width = 640; /*Width of the image*/
int height = 480; /*Height of the image*/
File pieChart3D = new File( "pie_Chart3D.jpeg" );
ChartUtilities.saveChartAsJPEG( pieChart3D , chart , width , height );
}
}
上記のJavaコードをPieChart3D.javaファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac PieChart3D.java
$java PieChart3D
すべてが正常であれば、コンパイルして実行され、次の3D円グラフを持つ PieChart3D.jpeg という名前のJPEG画像ファイルが作成されます-
3D棒グラフ
3D棒グラフは棒グラフと同じですが、3D効果もあります。 3D効果は、少し余分なコードを追加することで実現できます。これにより、棒グラフに3D効果を作成できます。 3D棒グラフの助けを借りて、さまざまな車の統計情報を表す次の例を考えてみましょう。 以下は、さまざまな特性とともに自動車ブランドのリストであり、棒グラフを使用して表示します-
Car | Speed | User Rating | Millage | Safety |
---|---|---|---|---|
FIAT | 1.0 | 3.0 | 5.0 | 5.0 |
AUDI | 5.0 | 6.0 | 10.0 | 4.0 |
FORD | 4.0 | 2.0 | 3.0 | 6.0 |
次のコードは、上記の情報から3D棒グラフを作成します。 このコードは、AWTベースのアプリケーションに棒グラフを埋め込むのに役立ちます。
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;
public class BarChart3D {
public static void main( String[ ] args )throws Exception {
final String fait = "FAIT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String popular = "Popular";
final String mailage = "Mailage";
final String userrating = "User Rating";
final String safety = "safety";
final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fait , speed );
dataset.addValue( 4.0 , fait , popular );
dataset.addValue( 3.0 , fait , userrating );
dataset.addValue( 5.0 , fait , mailage );
dataset.addValue( 5.0 , fait , safety );
dataset.addValue( 5.0 , audi , speed );
dataset.addValue( 7.0 , audi , popular );
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , mailage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );
dataset.addValue( 3.0 , ford , popular );
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , mailage );
dataset.addValue( 6.0 , ford , safety );
JFreeChart barChart = ChartFactory.createBarChart3D(
"Car Usage Statistics",
"Category",
"Score",
dataset,
PlotOrientation.VERTICAL,
true, true, false);
int width = 640;/*Width of the image*/
int height = 480;/*Height of the image*/
File barChart3D = new File( "barChart3D.jpeg" );
ChartUtilities.saveChartAsJPEG( barChart3D, barChart, width, height);
}
}
上記のJavaコードを BarChart3D.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac BarChart3D.java
$java BarChart3
環境に問題がなければ、コンパイルして実行し、次の3D棒グラフを持つJPEG画像ファイル BarChart3D.jpeg を作成します-
JFreeChart-バブルチャート
この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*バブルチャート*を作成する方法を示します。 バブルチャートは、情報を3次元で表示します。 (x、y)座標が交差する場所にバブルがプロットされます。 バブルのサイズは、X軸とY軸の範囲または量と見なされます。
ビジネスデータ
年齢、体重、および作業能力とともに、さまざまな人を考えてみましょう。 中華鍋の容量は、チャートにバブルとしてプロットされる時間数として扱うことができます。
重量
年齢
30
40
50
60
70
80
10
4
作業
20
5
30
10
40
8
50
9
60
6
AWTベースのアプリケーション
上記の情報からバブルチャートを作成するコードを次に示します。 このコードは、AWTベースのアプリケーションにバブルチャートを埋め込むのに役立ちます。
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BubbleChart_AWT extends ApplicationFrame {
public BubbleChart_AWT( String s ) {
super( s );
JPanel jpanel = createDemoPanel( );
jpanel.setPreferredSize(new Dimension( 560 , 370 ) );
setContentPane( jpanel );
}
private static JFreeChart createChart( XYZDataset xyzdataset ) {
JFreeChart jfreechart = ChartFactory.createBubbleChart(
"AGE vs WEIGHT vs WORK",
"Weight",
"AGE",
xyzdataset,
PlotOrientation.HORIZONTAL,
true, true, false);
XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
xyplot.setForegroundAlpha( 0.65F );
XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
xyitemrenderer.setSeriesPaint( 0 , Color.blue );
NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
numberaxis.setLowerMargin( 0.2 );
numberaxis.setUpperMargin( 0.5 );
NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
numberaxis1.setLowerMargin( 0.8 );
numberaxis1.setUpperMargin( 0.9 );
return jfreechart;
}
public static XYZDataset createDataset( ) {
DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset();
double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
double ad3[][] = { ad , ad1 , ad2 };
defaultxyzdataset.addSeries( "Series 1" , ad3 );
return defaultxyzdataset;
}
public static JPanel createDemoPanel( ) {
JFreeChart jfreechart = createChart( createDataset( ) );
ChartPanel chartpanel = new ChartPanel( jfreechart );
chartpanel.setDomainZoomable( true );
chartpanel.setRangeZoomable( true );
return chartpanel;
}
public static void main( String args[ ] ) {
BubbleChart_AWT bubblechart = new BubbleChart_AWT( "Bubble Chart_frame" );
bubblechart.pack( );
RefineryUtilities.centerFrameOnScreen( bubblechart );
bubblechart.setVisible( true );
}
}
上記のJavaコードを BubbleChart_AWT.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac BubbleChart_AWT.java
$java BubbleChart_AW
すべてがうまくいけば、コンパイルして実行し、次のバブルグラフを生成します-
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。
import java.io.*;
import java.awt.Color;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.chart.ChartUtilities;
public class BubbleChart_image {
public static void main( String args[ ] )throws Exception {
DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset( );
double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
double ad3[ ][ ] = { ad , ad1 , ad2 };
defaultxyzdataset.addSeries( "Series 1" , ad3 );
JFreeChart jfreechart = ChartFactory.createBubbleChart(
"AGE vs WEIGHT vs WORK",
"Weight",
"AGE",
defaultxyzdataset,
PlotOrientation.HORIZONTAL,
true, true, false);
XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
xyplot.setForegroundAlpha( 0.65F );
XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
xyitemrenderer.setSeriesPaint( 0 , Color.blue );
NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
numberaxis.setLowerMargin( 0.2 );
numberaxis.setUpperMargin( 0.5 );
NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
numberaxis1.setLowerMargin( 0.8 );
numberaxis1.setUpperMargin( 0.9 );
int width = 560; /*Width of the image*/
int height = 370; /*Height of the image*/
File bubbleChart = new File("BubbleChart.jpeg");
ChartUtilities.saveChartAsJPEG(bubbleChart,jfreechart,width,height);
}
}
上記のJavaコードを BubbleChart_image.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac BubbleChart_image.java
$java BubbleChart_image
すべてが問題なければ、コンパイルして実行し、 BubbleChart.jpeg という名前のJPEGイメージファイルを現在のディレクトリに作成します。
JFreeChart-時系列チャート
時系列グラフには、等間隔で変化するデータポイントのシーケンスが表示されます。 この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*時系列グラフ*を作成する方法を示します。
ビジネスデータ
標準のJava API * Math.random()*を使用して生成されたさまざまな乱数について考えてみましょう。 これらの数値を使用して、時系列グラフを生成します。 特定の時間間隔でWebサイトで発生したエラーの総数について同様のグラフを生成できます。
AWTベースのアプリケーション
以下は、内部で特定の時間に* Math.random()*によって生成された数値から時系列グラフを作成するコードです。
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class TimeSeries_AWT extends ApplicationFrame {
public TimeSeries_AWT( final String title ) {
super( title );
final XYDataset dataset = createDataset( );
final JFreeChart chart = createChart( dataset );
final ChartPanel chartPanel = new ChartPanel( chart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );
chartPanel.setMouseZoomable( true , false );
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
final TimeSeries series = new TimeSeries( "Random Data" );
Second current = new Second( );
double value = 100.0;
for (int i = 0; i < 4000; i++) {
try {
value = value + Math.random( ) - 0.5;
series.add(current, new Double( value ) );
current = ( Second ) current.next( );
} catch ( SeriesException e ) {
System.err.println("Error adding to series");
}
}
return new TimeSeriesCollection(series);
}
private JFreeChart createChart( final XYDataset dataset ) {
return ChartFactory.createTimeSeriesChart(
"Computing Test",
"Seconds",
"Value",
dataset,
false,
false,
false);
}
public static void main( final String[ ] args ) {
final String title = "Time Series Management";
final TimeSeries_AWT demo = new TimeSeries_AWT( title );
demo.pack( );
RefineryUtilities.positionFrameRandomly( demo );
demo.setVisible( true );
}
}
上記のJavaコードを TimeSeries_AWT.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac TimeSeries_AWT.java
$java TImeSeries_AWT
すべてがうまくいけば、コンパイルして実行し、次の時系列グラフを生成します-
JPEG画像作成
上記の例を書き直して、コマンドラインからJPEGイメージを生成します。
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.chart.ChartUtilities;
public class TimeSeriesChart {
public static void main( final String[ ] args )throws Exception {
final TimeSeries series = new TimeSeries( "Random Data" );
Second current = new Second();
double value = 100.0;
for ( int i = 0 ; i < 4000 ; i++ ) {
try {
value = value + Math.random( ) - 0.5;
series.add( current , new Double( value ) );
current = ( Second ) current.next( );
} catch ( SeriesException e ) {
System.err.println( "Error adding to series" );
}
}
final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);
JFreeChart timechart = ChartFactory.createTimeSeriesChart(
"Computing Test",
"Seconds",
"Value",
dataset,
false,
false,
false);
int width = 560; /*Width of the image*/
int height = 370; /*Height of the image*/
File timeChart = new File( "TimeChart.jpeg" );
ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );
}
}
上記のJavaコードを TimeSeriesChart.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。
$javac TimeSeriesChart.java
$java TimeSeriesChart
環境に問題がなければ、コンパイルして実行し、現在のディレクトリにJPEGイメージファイル TimeChart.jpeg ファイルを作成します。
JFreeChart-ファイルインターフェイス
これまで、静的データを使用してJFreeChart APIを使用してさまざまなタイプのチャートを作成する方法を学びました。 しかし、実稼働環境では、データは事前定義された形式のテキストファイルの形式で提供されるか、データベースから直接取得されます。
この章では、特定の場所から特定のテキストファイルから単純なデータを読み取り、JFreeChartを使用して選択したチャートを作成する方法について説明します。
ビジネスデータ
*mobile.txt* という名前のファイルがあるとします。このファイルには、単純なコンマ(、)で区切られた異なるモバイルブランドとその販売(1日あたりの単位)があります-
Iphone 5S, 20
Samsung Grand, 20
MOTO G, 40 Nokia
Lumia, 10
ファイルに基づくチャート生成
以下は、mobile.txtで提供される情報に基づいて円グラフを作成するコードです-
import java.io.*;
import java.util.StringTokenizer;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieChart_File {
public static void main( String[ ] args )throws Exception {
String mobilebrands[ ] = {
"IPhone 5s" ,
"SamSung Grand" ,
"MotoG" ,
"Nokia Lumia"
};
InputStream in = new FileInputStream( new File( "C:/temp/test.txt" ) );
BufferedReader reader = new BufferedReader(new InputStreamReader(in ) );
StringBuilder out = new StringBuilder();
String line;
DefaultPieDataset dataset = new DefaultPieDataset();
while (( line = reader.readLine() ) != null ) {
out.append( line );
}
StringTokenizer s = new StringTokenizer( out.toString(), "," );
int i = 0;
while( s.hasMoreTokens( ) && ( mobilebrands [i] != null ) ) {
dataset.setValue(mobilebrands[i], Double.parseDouble( s.nextToken( ) ));
i++;
}
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", //chart title
dataset, //data
true, //include legend
true,
false);
int width = 560; /*Width of the image*/
int height = 370; /*Height of the image*/
File pieChart = new File( "pie_Chart.jpeg" );
ChartUtilities.saveChartAsJPEG( pieChart, chart, width, height);
}
}
上記のJavaコードを PieChart_File.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac PieChart_File.java
$java PieChart_File
すべてが正常であれば、コンパイルして実行され、次のチャートを含む PieChart.jpeg という名前のJPEG画像ファイルが作成されます。
JFreeChart-データベースインターフェイス
この章では、データベーステーブルから単純なデータを読み取り、JFreeChartを使用して選択したチャートを作成する方法について説明します。
ビジネスデータ
次のMySQLテーブルmobile_tbl(mobile_brand VARCHAR(100)NOT NULL、unit_sale INT NO NULL)があるとします。
このテーブルが次のレコードを持っていると考えてください-
Mobile Brands | Unit Sales |
---|---|
IPhone5S | 20 |
Samsung Grand | 20 |
MotoG | 40 |
Nokia Lumia | 10 |
データベースを使用したチャート生成
以下は、MySQLデータベースのtest_dbで利用可能なmobile_tblテーブルで提供される情報に基づいて円グラフを作成するコードです。 要件に基づいて、他のデータベースを使用できます。
import java.io.*;
import java.sql.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieChart_DB {
public static void main( String[ ] args )throws Exception {
String mobilebrands[] = {
"IPhone 5s",
"SamSung Grand",
"MotoG",
"Nokia Lumia"
};
/*Create MySQL Database Connection*/
Class.forName( "com.mysql.jdbc.Driver" );
Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jf_testdb" ,
"root",
"root123");
Statement statement = connect.createStatement( );
ResultSet resultSet = statement.executeQuery("select * from mobile_data" );
DefaultPieDataset dataset = new DefaultPieDataset( );
while( resultSet.next( ) ) {
dataset.setValue(
resultSet.getString( "mobile_brand" ) ,
Double.parseDouble( resultSet.getString( "unit_sale" )));
}
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", //chart title
dataset, //data
true, //include legend
true,
false );
int width = 560; /*Width of the image*/
int height = 370; /*Height of the image*/
File pieChart = new File( "Pie_Chart.jpeg" );
ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
}
}
上記のJavaコードを PieChart_DB.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。
$javac PieChart_DB.java
$java PieChart_DB
すべて問題なければ、コンパイルして実行し、次のチャートを持つ Pie_Chart.jpeg という名前のJPEG画像ファイルを作成します。