倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

GroovyChart と戯れて (0) : Groovy + JFreeChart

Griffon 0.9 のリリースとともに知ったのですが、JFreeChart のチャートを Groovy のビルダーを使って構築するライブラリ「GroovyChart」ってのがあるようです。

Griffon を使う分には「Charts Plugin」というプラグインをインストールすれば簡単に使えるようですが()、ここでは単独で使ってみた感じをご紹介。

と、その前に、こちら「Plotting graphs with JFreeChart」に GroovyChart を使わずに Groovy+JFreeChart でチャートを扱う方法がにあったので、今回はそれらを試してみます。

目次
GroovyChart と戯れて

ライブラリのセットアップ

まずはライブラリのセットアップ。 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 は次回から。

Groovyイン・アクション

Groovyイン・アクション

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