LoginSignup
4
1

More than 3 years have passed since last update.

JFreeChartサンプル

Last updated at Posted at 2019-06-29

■ 前書き

・これからJFreeChartについての解説をアップしていきます。本記事は目次となります。

・経緯と意図は次のとおりです。

・私はArtery(ベクター⇒プログラミング⇒Java言語からダウンロード可能)というJava用のライブラリを作っていて、その中にJFreeChart用の機能があります。しかしJFreeChartは使っている人は少ないので、JFreeChart自体の説明サンプルも入れています。

・上記のJFreeChartのサンプルを紹介します。ただすべてをアップするのは、かなり量があるのと、えげつないので、一部有用そうなサンプルを抜粋します。

・サンプルは未作成の部分が多々あり、また既存部分も整理しますので、アップには時間がかかります。

■ ヴァージョン

・JFreeChartの本家のダウンロードはSourceForgeを指しています。ヴァージョンは1.0.19。

・だがしかし、本家からはリンクしていませんが、GITHUBにもあります。ヴァージョンは1.5.0。

・今のところ、私のサンプルは1.0.19で書いています。

■ 概説

・JFreeChartの要素には次のものがある。
 ・Plot,Dataset,Renderer,Axis

・Plot
 ・グラフの表示領域。この中に複数のグラフが表示される。
 ・表示するチャートに応じたPlotを選択する。例えばパイチャートであればPiePlot。
 ・Plotの上位概念としてChartがある。Chartには複数のPlotを入れることができるが、多くの場合は一つのPlot。

・Dataset
 ・表示データを格納するクラス。かなり多くのクラスがある。
 ・Plotと表示するグラフと元データの形式に応じて適切なDatasetを選択する。
 ・注意、メソッドの構成、メソッド名、引数の順番、引数の構造などがわりと統一されていない。

・Renderer
 ・グラフの具体的な表示を行う。こちらもかなり数が多い。
 ・例えば棒グラフであれば、BarRendererを使用する。
 ・RendererはPlotに対して指定するが、グラフに対して指定することも可能。
 ・Plotに指定した場合は、色やポイントの形状などは自動的に決定される。
 ・グラフごとに指定する場合は、全責任を負う必要があり、かなり大変。
  ・例えばPlotに対して指定をして、特定のグラフに対して必要な部分のみを変更する。例えば線の太さを変更する。このようにするのが実用的。

・Axis
 ・X軸(DomainAxis)とY軸(ValueAxis)。
 ・代表的なものは数値や日時の軸。対数軸もあり。
 ・上下限はデータを見て自動的に決定してくれるが、自分で設定することも可能。
 ・上下限をデータより狭く設定するとグラフが拡大して表示される。
 ・SymbolAxisは離散値の軸。この場合は階段状に表示したいのでStepRendererを使用する。

・イベント
 ・画面上を右クリックするとPlotに応じたメニューが表示される。
 ・メニューを消すことも、別メニューの表示も可能。別メニューは自己責任でプログラミング。
 ・画面をドラッグすると拡大することができる。
 ・クリック時に十字線を表示したり、データを取得することができる。
 ・しかしリスナーの中でデータを取得すると一回前のデータが取得されるので、別途スレッドで取得する。
 ・取得したデータはdoubleなので、日時などの意味のあるデータに変換する必要があるかも。
 ・値は取得できるが、どのグラフかは不明なので、データを検索してグラフを決定する必要がある。

■ 目次

///////////////////////////////////////////////////////////
// いろいろなチャート

パイチャート
パイチャート-DefaultPieDatasetの作成
パイチャート-UIで特定データを強調する

複数パイチャート
[複数パイチャート/DefaultCategoryDatasetの作成★]

レーダーチャート/SpiderWebChart
レーダーチャート(SpiderWebChart)-ArMatrixからCategoryDatasetを作成
レーダーチャート/SpiderWebChart/特定データの強調
レーダーチャート/SpiderWebChart/UIで特定データを強調する

バブルチャート/BubbleChart
バブルチャート/BubbleChart-DefaultXYZDatasetの作成
バブルチャート/UIで特定データを強調する

バーチャート/BarChart
バーチャート/DefaultCategoryDatasetの作成-ArMatrixから作成する
バーチャート/DefaultCategoryDatasetの作成-ArMatrixから作成する-続き
バーチャートに値を表示する
バーチャート-UIで特定データを強調する

// 三次元バーチャート

積上げバーチャート
[積上げバーチャート-Datasetの作成★]
積上げバーチャート-特定データの強調
積上げバーチャート-特定データの強調-続き
積上げバーチャート-UIで特定データを強調する
積上げバーチャート-人口構成図-DefaultKeyedValues2DDataset
積上げバーチャート-人口構成図-DefaultKeyedValues2DDatasetの作成

パレート図

// インターヴァルチャート/一つのxに対して二つのy値がある ⇒ 例.最低気温と最高気温のグラフ.
インターヴァルチャート-DefaultIntervalCategoryDataset
インターヴァルチャート-DefaultIntervalCategoryDataset-Collectionから作成する

// 複数値チャート-同一キーに複数の値
複数値チャート-DefaultMultiValueCategoryDataset
複数値チャート-DefaultMultiValueCategoryDataset-特定データの強調
複数値チャート-UIで特定データを強調する

// 平面上に■の領域を描く
XYインターヴァルチャート/DefaultIntervalXYDataset
[XYインターヴァルチャート/DefaultIntervalXYDatasetの生成★]
XYインターヴァルチャート/UIで特定データを強調する

// DefaultXYDatasetを使う
二次元分布チャート/DefaultXYDataset
二次元分布チャート/XYChart/DefaultXYDatasetの作成/Collectionから作成する
二次元分布チャート/レンダラを個別に指定する/特定データの強調
二次元分布チャート/UIで特定データを強調する

// XYSeriesCollectionを使う
二次元分布チャート/XYSeriesCollection
二次元分布チャート-XYSeriesCollection-XYSeriesをCollectionから作成する.X,Y値はオブジェクトから取得する
二次元分布チャート-XYSeriesCollection-XYSeriesをListから作成する.X値はListのインデックス、Y値はオブジェクトから取得
二次元分布チャート-XYSeriesCollectionをMapMap<T0,List<T1>>から作成する.X,Y値はオブジェクトから取得する
二次元分布チャート-XYSeriesCollection-レンダラを個別に指定する-特定データを強調する
二次元分布チャート-XYSeriesCollection-UIで特定データを強調する

平均と標準偏差のチャート-DefaultStatisticalCategoryDataset
平均と標準偏差のチャート-DefaultStatisticalCategoryDataset-Collectionから作成する

// 時系列チャート-TimeSeriesCollectionを使う
時系列チャート/TimeSeriesCollection
時系列チャート/TimeSeriesCollectionをMap<T0,List<T1>>から作成
時系列チャート/TimeSeriesCollectionをArMatrix<T0,T1,T2>から作成
時系列チャート/TimeSeriesCollection/UIで特定データを強調する

ガントチャート-TaskSeriesCollection

PolarChart-極座標
PolarChart-極座標-特定データを強調する
PolarChart-極座標-UIで特定データを強調する

// 多軸チャート

// SHLCデータのチャート

///////////////////////////////////////////////////////////
// レンダラ(Renderer)

///////////////////////////////////////////////////////////
// 軸(Axis)、グリッド、マーカー
LogAxis-対数軸
SymbolAxis,StepRender
NumberAxis-目盛りの間隔の設定
ExtendedCategoryAxis-軸の値に補足説明をつける
DateAxis

グリッドを表示しないようにする
グリッドの色と太さを変える
上限線、下限線の設定
チャートの拡大と縮小
X軸が共通な二つのグラフを上下に表示する
X軸が共通な二つのグラフを重ねて表示する

///////////////////////////////////////////////////////////
// イベント処理(Event)
XYPlot-マウスの動きに応じて十字線と値を表示する
XYPlot-マウスの動きに応じて十字線と値を表示する-ArXYPlotMouseMovedHandlerを使用
XYPlot-クリック時に値を取得し十字線を表示する
XYPlot-クリック時に値を取得し十字線を表示する-ArcXYPlotMouseClickedHandlerを使用-0
XYPlot-クリック時に値を取得し十字線を表示する-ArcXYPlotMouseClickedHandlerを使用-1

///////////////////////////////////////////////////////////
// 雑多
参議院議員選挙(2019)開票速報
貸借対照表

==== ended.

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1