枠線の線属性の指定(setBorderStroke)

広告

グラフに枠線を表示する設定にしている場合、枠線の線の属性を指定することが出来ます。JFreeChartクラスで用意されている「setBorderStroke」メソッドを使います。

Sets the stroke used to draw the chart border (if visible).

Parameters:
  stroke - the stroke.

引数にはStrokeインターフェースを実装したクラスのオブジェクトを指定します。

Strokeインターフェースを実装したクラスとしては「java.awt.BasicStroke」クラスがあります。線の形状や太さなどの設定が可能です。(詳細は「線属性の設定」などを参照して下さい)。

線の太さをや形状を指定するには次のコンストラクタを使用します。

指定された属性を持つ新しい BasicStroke を構築します。

パラメータ:
  width - この BasicStroke の幅。値は 0.0f 以上でなければならない。幅
    が 0.0f に設定されている場合、ストロークは対象のデバイス上のもっと
    も細いラインとして描画される。 また、このときアンチエイリアス設定
    が使用される
  cap - BasicStroke の両端の装飾
  join - 輪郭線セグメントの接合部の装飾
  miterlimit - 接合トリミングの制限値。miterlimit は 1.0f 以上でなけれ
    ばならない
  dash - 破線パターンを表す配列
  dash_phase - 破線パターン開始位置のオフセット 

1番目の引数と5番目と6番目の引数だけが重要です。線の形状の指定方法など詳しくは「破線パターンの設定」を参照して下さい。

実際の使い方は次のようになります。

JFreeChart chart = 
  ChartFactory.createPieChart("title", data, false, false, false);

chart.setBorderVisible(true);
chart.setBorderPaint(Color.red);

float dash[] = {10.0f, 3.0f};
BasicStroke dsahStroke = new BasicStroke(5.0f, 
                                         BasicStroke.CAP_BUTT, 
                                         BasicStroke.JOIN_MITER, 
                                         3.0f,
                                         dash,
                                         0.0f);
chart.setBorderStroke(dsahStroke);

上記では線の太さを5.0fとし、線の形状を破線に設定しています。

サンプルプログラム

では簡単なサンプルを作成して試してみます。

Test3_1.java

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.ChartUtilities;
import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.BasicStroke;

public class Test3_1{
  public static void main(String[] args) {
    DefaultPieDataset data = new DefaultPieDataset();
    data.setValue("外食", 37);
    data.setValue("弁当", 31);
    data.setValue("食べない", 32);

    JFreeChart chart = 
      ChartFactory.createPieChart("昼食", data, false, false, false);

    chart.setBorderVisible(true);
    chart.setBorderPaint(Color.red);

    float dash[] = {10.0f, 3.0f};
    BasicStroke dsahStroke = new BasicStroke(5.0f,
                                             BasicStroke.CAP_BUTT,
                                             BasicStroke.JOIN_MITER,
                                             3.0f,
                                             dash,
                                             0.0f);
    chart.setBorderStroke(dsahStroke);

    File file = new File("./test3_1.png");
    try {
      ChartUtilities.saveChartAsPNG(file, chart, 400, 400);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

枠線の線属性の指定(setBorderStroke)

実行するとグラフをPNG画像として保存します。今回は枠線を表示し色を赤に設定したあとで、線の太さと形状を設定しています。

枠線の線属性の指定(setBorderStroke)

( Written by Tatsuo Ikura )