倭マン's BLOG

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

GroovyChart と戯れて (2) : GroovyChart のサンプルを動かす

さぁ、やっとこさ GroovyChart のサンプルを動かすときがきた!

まずは groovychart サイトの「Examples of using JFreeChart」のページからサンプルを拝借(いくらか変更してます):

import javax.swing.WindowConstants as WC

import com.thecoderscorner.groovychart.chart.ChartBuilder
import groovy.swing.SwingBuilder
import java.awt.*
import org.jfree.chart.ChartPanel
import org.jfree.chart.plot.*
import static java.lang.Math.sqrt

def areachart = new ChartBuilder().xyareachart(
        title:'BMI Index Graph',
        XAxisLabel: 'weight (Kg)',
        YAxisLabel: 'height (m)',
        orientation:PlotOrientation.VERTICAL,
        legend:true,
        tooltips:false,
        urls:false) {

    xyseries {
        for(int weight = 0; weight < 150; weight += 10) {
            point('Overweight', x: weight, y: sqrt(weight / 35.0d))
            point('Normal', x: weight, y: sqrt(weight / 25.0d))
            point('Underweight', x: weight, y: sqrt(weight / 18.0d))
        }
    }

    xyplot {
        datasetRenderingOrder DatasetRenderingOrder.FORWARD
        foregroundAlpha(1.0f)
        rangeGridlinePaint(Color.BLACK)
        domainGridlinePaint(Color.BLACK)
        domainaxis {
            lowerBound(30)
            upperBound(135)
        }
        rangeaxis {
            lowerBound(0.75d)
        }

        xyitemrenderer {
            outlinePaint(Color.BLACK)
            outlineStroke(new BasicStroke())
            seriesPaint(0, paint: new Color(0xff, 0, 0))
            seriesPaint(1, paint: new Color(255,255,50))
            seriesPaint(2, paint: new Color(0xff, 0x66, 0x33))
        }
    }
}

def chartPanel = new ChartPanel(areachart.chart, false)
chartPanel.preferredSize = [1000, 500]
chartPanel.mouseZoomable = [true, false]

def frame = new SwingBuilder().frame(
            title:'This is a Frame',
            location:[100,100],
            size:[800,400],
            defaultCloseOperation:WC.EXIT_ON_CLOSE){
    widget(chartPanel)
}

frame.visible = true

これを表示すると


まぁ、一応成功っぽいケド、サンプルをとってきたページに載ってるのとは色が違いますねぇ。 あと、「ChartBuilder には xyitemrenderer ってプロパティがない」っていう「警告」が表示されます。 xyitemrenderre 下には色が設定されてるっぽいので、この要素は無視されてるようですね。

xyitemrenderer 要素を除いてみる


上記のサンプルで「警告」がでてるっぽい xyitemrenderer ノードを除いてサンプルを動かすと、「警告」が出ずに、同じチャートが表示されます。

xyitemrenderer ノードを renderer 要素に変えてみる


xyitemrenderer ノードの親ノード xyplot はおそらく XYPlot オブジェクトを生成してるので、XYPlot の JavaDoc を見てみると、「renderer」ってプロパティがあるので、試しに xyitemrenderer の代わりに renderer としてみると

    xyplot {
        ...
        renderer {
            outlinePaint(Color.BLACK)
            outlineStroke(new BasicStroke())
            seriesPaint(0, paint: new Color(0xff, 0, 0))
            seriesPaint(1, paint: new Color(255,255,50))
            seriesPaint(2, paint: new Color(0xff, 0x66, 0x33))
        }
    }

案外すんなり動いてくれました。 色もきちんとセットされてます。


すばらしい!
Groovyイン・アクション

Groovyイン・アクション