- Home ›
- JFreeChartを使ったグラフ作成 ›
- 棒グラフ(BarChart, BarChart3D) ›
- HERE
3D棒グラフの作成(createBarChart3Dメソッド)
棒グラフでは棒を立体的にした3D棒グラフも利用することが出来ます。
まずChartFactoryクラスの「createBarChart3D」メソッドを使って棒グラフを扱うJFreeChartクラスのオブジェクトを作成します。
createBarChart3D public static JFreeChart createBarChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)
Creates a bar chart with a 3D effect. The chart object returned by this method uses a CategoryPlot instance as the plot, with a CategoryAxis3D for the domain axis, a NumberAxis3D as the range axis, and a BarRenderer3D as the renderer. Parameters: title - the chart title (null permitted). categoryAxisLabel - the label for the category axis (null permitted). valueAxisLabel - the label for the value axis (null permitted). dataset - the dataset for the chart (null permitted). orientation - the plot orientation (horizontal or vertical) (null not permitted). legend - a flag specifying whether or not a legend is required. tooltips - configure chart to generate tool tips? urls - configure chart to generate URLs? Returns: A bar chart with a 3D effect.
1番目の引数にグラフのタイトルを文字列で指定します。
2番目の引数には項目が配置される軸のラベルを文字列で指定します。3番目の引数には値が配置される軸のラベルを文字列で指定します。
4番目の引数にはグラフのデータをCategoryDatasetインターフェースを実装したクラスのオブジェクトで指定します。今回はDefaultCategoryDatasetクラスを使います。詳細は次のページで確認します。
5番目の引数には棒グラフの向きを指定します。指定可能な値はorg.jfree.chart.plot.PlotOrientationクラスで定義されており、次のどちらかとなります。
PlotOrientation.HORIZONTAL PlotOrientation.VERTICAL
6番目の引数には凡例を表示するかどうかを「true」か「false」で指定します。
7番目の引数にはツールチップを作成するかどうかを「true」か「false」で指定します。
8番目の引数にはURLを作成するかどうかを「true」か「false」で指定します。
実際の使い方は次のようになります。
DefaultCategoryDataset data = new DefaultCategoryDataset(); JFreeChart chart = ChartFactory.createBarChart3D("月別売上", "月", "売上", data, PlotOrientation.VERTICAL, true, false, false);
データの登録
データの登録は棒グラフの場合と同じくDefaultCategoryDatasetクラスを使用します。
本社 | 大阪支社 | 名古屋支社 | |
---|---|---|---|
4月 | 800 | 500 | 300 |
5月 | 600 | 300 | 900 |
6月 | 900 | 200 | 600 |
実際には次のように記述します。
DefaultCategoryDataset data = new DefaultCategoryDataset(); String[] series = {"本社", "大阪支社", "名古屋支社"}; String[] category = {"4月", "5月", "6月"}; data.addValue(800, series[0], category[0]); data.addValue(600, series[0], category[1]); data.addValue(900, series[0], category[2]); data.addValue(500, series[1], category[0]); data.addValue(300, series[1], category[1]); data.addValue(200, series[1], category[2]); data.addValue(300, series[2], category[0]); data.addValue(900, series[2], category[1]); data.addValue(600, series[2], category[2]);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import org.jfree.chart.JFreeChart; import org.jfree.chart.ChartFactory; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.chart.plot.PlotOrientation; import javax.swing.JFrame; import java.awt.BorderLayout; import org.jfree.chart.ChartPanel; public class Test5_1 extends JFrame{ public static void main(String[] args) { Test5_1 frame = new Test5_1(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 500, 500); frame.setTitle("グラフサンプル"); frame.setVisible(true); } Test5_1(){ DefaultCategoryDataset data = new DefaultCategoryDataset(); String[] series = {"本社", "大阪支社", "名古屋支社"}; String[] category = {"4月", "5月", "6月"}; data.addValue(800, series[0], category[0]); data.addValue(600, series[0], category[1]); data.addValue(900, series[0], category[2]); data.addValue(500, series[1], category[0]); data.addValue(300, series[1], category[1]); data.addValue(200, series[1], category[2]); data.addValue(300, series[2], category[0]); data.addValue(900, series[2], category[1]); data.addValue(600, series[2], category[2]); JFreeChart chart = ChartFactory.createBarChart3D("月別売上", "月", "売上", data, PlotOrientation.VERTICAL, true, false, false); ChartPanel cpanel = new ChartPanel(chart); getContentPane().add(cpanel, BorderLayout.CENTER); } }
上記をコンパイルした後で実行すると次のようにJavaアプリケーションが起動します。
サンプルプログラム
もう一つサンプルを試します。今度はグラフの向きを変えてみます。
import org.jfree.chart.JFreeChart; import org.jfree.chart.ChartFactory; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.chart.plot.PlotOrientation; import javax.swing.JFrame; import java.awt.BorderLayout; import org.jfree.chart.ChartPanel; public class Test5_2 extends JFrame{ public static void main(String[] args) { Test5_2 frame = new Test5_2(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 500, 500); frame.setTitle("グラフサンプル"); frame.setVisible(true); } Test5_2(){ DefaultCategoryDataset data = new DefaultCategoryDataset(); String[] series = {"本社", "大阪支社", "名古屋支社"}; String[] category = {"4月", "5月", "6月"}; data.addValue(800, series[0], category[0]); data.addValue(600, series[0], category[1]); data.addValue(900, series[0], category[2]); data.addValue(500, series[1], category[0]); data.addValue(300, series[1], category[1]); data.addValue(200, series[1], category[2]); data.addValue(300, series[2], category[0]); data.addValue(900, series[2], category[1]); data.addValue(600, series[2], category[2]); JFreeChart chart = ChartFactory.createBarChart3D("月別売上", "月", "売上", data, PlotOrientation.HORIZONTAL, true, false, false); ChartPanel cpanel = new ChartPanel(chart); getContentPane().add(cpanel, BorderLayout.CENTER); } }
上記をコンパイルした後で実行すると次のようにJavaアプリケーションが起動します。
( Written by Tatsuo Ikura )