1   package test.tuigwaa;
2   
3   import java.io.File;
4   import java.io.IOException;
5   
6   import junit.framework.TestCase;
7   
8   import org.jfree.chart.ChartFactory;
9   import org.jfree.chart.ChartUtilities;
10  import org.jfree.chart.JFreeChart;
11  import org.jfree.chart.plot.PiePlot;
12  import org.jfree.data.category.CategoryDataset;
13  import org.jfree.data.general.DatasetUtilities;
14  import org.jfree.data.general.PieDataset;
15  
16  public class JFreeChartTest extends TestCase {
17  
18  	public void testPieChart() {
19  		SamplePieChart spc = new SamplePieChart();
20  		spc.workPieChart();
21  	}
22  
23  	public class SamplePieChart{
24  		
25  		public SamplePieChart() {
26  		}
27  
28  		/***
29  		 * PieChartの作成と使用.
30  		 */
31  		public void workPieChart() {
32  			// まずPieChartを作成する.
33  			JFreeChart pieChart = getPieChart();
34  
35  			// 作成したPieChartでPNGファイルを作成.
36  			File outFile = new File("./piechart.png");
37  			try {
38  				ChartUtilities.saveChartAsPNG(outFile, pieChart, 500, 500);
39  			} catch (IOException e) {
40  				e.printStackTrace();
41  			}
42  		}
43  
44  		/***
45  		 * JFreeChartオブジェクトの作成と操作
46  		 */
47  		public JFreeChart getPieChart() {
48  			// 円グラフのデータ
49  			double[][] data = new double[][] { { 1.0, 3.2, 3.0, 4.0 }};
50  			// CategoryDatasetオブジェクトの作成
51  			CategoryDataset cData = DatasetUtilities.createCategoryDataset(
52  					new String[]{"1"}, new String[]{"test1", "aa2", "bbb3", "b4"}, data);
53  			// CategoryDatasetオブジェクトを円グラフ向けのPieDatasetオブジェクトに変換
54  			PieDataset pieData = DatasetUtilities.createPieDatasetForRow(cData,
55  					0);
56  			;
57  			// PieDataset pieData =
58  			// DatasetUtilities.createPieDatasetForColumn(cData, 0);;
59  			// PieDatasetをデータにしてJFreeChartを作成
60  			JFreeChart pieChart = ChartFactory.createPieChart("SamplePieChart",
61  					pieData, true, true, true);
62  
63  			// PiePlotオブジェクトを取り出して描画データを操作する
64  			PiePlot piePlot = (PiePlot) pieChart.getPlot();
65  			// 楕円を許可する
66  			piePlot.setCircular(false);
67  			// 半径の指定
68  			//piePlot.setR;
69  			// 円グラフから強調する部分を指定する
70  			piePlot.setExplodePercent(1, 0.5);
71  			// 表の説明位置の設定
72  			// Legend legend = pieChart.getLegend();
73  			// legend.setAnchor (Legend.EAST);
74  			return pieChart;
75  		}
76  
77  	}
78  }