今回は、GroovyChart でチャートを表示させるために最低限必要なコードを見ていきます。 サンプルコードは前回使ってたものをベースに考えます。
plot ノード
データセットがないとグラフの描きようがないので、dataset ノードはおいておきましょう。 なので、まずは plot ノード (xyplot) を取り除きましょう。
def builder = new ChartBuilder() def areachart = builder.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: Math.sqrt(weight / 35.0d)) point('Normal', x: weight, y: Math.sqrt(weight / 25.0d)) point('Underweight', x: weight, y: Math.sqrt(weight / 18.0d)) } } } // 後は同じ
「後は同じ」部分は ChartPanel を生成して JFrame に埋め込む部分です(以下同じ)。 このコードを実行すると下図のようになります:
うわッ! くすんでる!
一応表示されたので、良しとすべき・・・とはならないよね? 一番簡単なくすみ取りは、xyareachart ノード下に
xyplot{
foregroundAlpha(1.0f)
}
を付け加えることです。 まぁ、我慢の効くレベルかな?
chart ノードの属性
chart ノード (xyareachart) に渡す属性 (title, XAxisLabel など) は、見るからに JFreeChart の ChartFactory#createXxxxChart() メソッドに渡される値でしょう*1。 そこでは引数を省略することはできませんでしたが、ここではマップとして渡しているので引数を省略できるか試してみると、PlotOrientation 以外は省略可能なようです。
orientation 属性のみを指定したコード
def builder = new ChartBuilder() def areachart = builder.xyareachart(orientation:PlotOrientation.VERTICAL) { xyseries { for(int weight = 0; weight < 150; weight += 10) { point('Overweight', x: weight, y: Math.sqrt(weight / 35.0d)) point('Normal', x: weight, y: Math.sqrt(weight / 25.0d)) point('Underweight', x: weight, y: Math.sqrt(weight / 18.0d)) } } } // 後は同じ
を実行してみると
タイトルや軸のラベルまでもが削がれたくすみチャートが表示されます。 くすみ方が変わってるのは原因不明。
まぁ、こんな感じ。
- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る