Griffon 0.9 のリリースとともに知ったのですが、JFreeChart のチャートを Groovy のビルダーを使って構築するライブラリ「GroovyChart」ってのがあるようです。
Griffon を使う分には「Charts Plugin」というプラグインをインストールすれば簡単に使えるようですが(→)、ここでは単独で使ってみた感じをご紹介。
と、その前に、こちら「Plotting graphs with JFreeChart」に GroovyChart を使わずに Groovy+JFreeChart でチャートを扱う方法がにあったので、今回はそれらを試してみます。
目次
GroovyChart と戯れて- 0 : Groovy + JFreeChart
- 1 : GroovyChart のセットアップ
- 2 : GroovyChart のサンプルを動かす
- 4 : GroovyChart は日本語に対応してるのか?それはやってみなくちゃ分からない。
- 3 : サンプルコードをもう少し詳しく見てみよう
- 4 : チャートを表示させるのに最低限必要なのは?
- 5 : ChartBuilder が構築するのは JFreeChart のラッパー
- 6 : データとビューを分離する
- 7 : データをビルダーで構築する
ライブラリのセットアップ
まずはライブラリのセットアップ。 Groovy はインストールされているとして、JFreeChart のセットアップを。Maven2 を使っているなら、pom.xml に以下の依存性を書きます:
<dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.12</version> </dependency>
普通に Jar ファイルをクラスパス上においてインストールしたい場合は、こちらからアーカイブをダウンロード&解凍して、「lib フォルダ」下の
- jfreechart-1.0.xx.jar
- jcommon-1.0.xx.jar
をクラスパス上に配置します。
Groovy+JFreeChart のサンプルを動かす
さて、ではサンプルを動かしてみましょう。 「Plotting graphs with JFreeChart」からサンプルコードを拝借して(ちょっとだけ修正せいてます)import groovy.swing.SwingBuilder import java.awt.Color import javax.swing.WindowConstants as WC import org.jfree.chart.ChartFactory import org.jfree.chart.ChartPanel import org.jfree.data.general.DefaultPieDataset def dataset = new DefaultPieDataset(); dataset.with{ setValue('Apr', 10) setValue('May', 30) setValue('June', 40) } def chart = ChartFactory.createPieChart('Pie Chart Sample', dataset, true, true, true) chart.backgroundPaint = Color.WHITE def swing = new SwingBuilder() def frame = swing.frame( title:'Groovy PieChart', defaultCloseOperation:WC.EXIT_ON_CLOSE) { panel(id:'canvas') { widget(new ChartPanel(chart)) } } frame.pack() frame.visible = true
グラフを表示させると

となります。 Groovy っぽいところは
- dataset にデータをセットする際、with() メソッドを使用している
- Swing のフレーム (JFrame) にチャートを埋め込むときは「widget(new ChartPanel(chart))」のようにする
といったところでしょうか。 なんか、GroovyChart 使わなくても、これだけで充分便利ですねぇ。
日本語化
タイトルなどに日本語を入れていると、そのまま表示させると文字化物語してしまいます。 解決策はこちらに載ってました。 チャートを生成する前に ChartFactory.chartTheme を設定すればいいようです。import groovy.swing.SwingBuilder import java.awt.Color import javax.swing.WindowConstants as WC import org.jfree.chart.ChartFactory import org.jfree.chart.ChartPanel import org.jfree.data.general.DefaultPieDataset import org.jfree.chart.StandardChartTheme def dataset = new DefaultPieDataset(); dataset.with{ setValue('4月', 10) setValue('5月', 30) setValue('6月', 40) } ChartFactory.chartTheme = StandardChartTheme.createLegacyTheme() // 文字化け対策 def chart = ChartFactory.createPieChart('円グラフのサンプル', dataset, true, true, true) chart.backgroundPaint = Color.WHITE def swing = new SwingBuilder() def frame = swing.frame( title:'Groovy 円グラフ', defaultCloseOperation:WC.EXIT_ON_CLOSE) { panel(id:'canvas') { widget(new ChartPanel(chart)) } } frame.pack() frame.visible = true
実行すると

と表示されます。
GroovyChart は次回から。

- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る