用JFreeChart實現簡單的柱狀圖和餅狀圖,簡單便於理解.
java 代碼
- package test;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import org.jfree.data.category.CategoryDataset;
- import org.jfree.data.category.DefaultCategoryDataset;
- import org.jfree.data.general.DefaultPieDataset;
- import org.jfree.chart.*;
- import org.jfree.chart.plot.*;
- public class ChartDemo {
- public static void main(String[] args)
- {
- ChartDemo chartD = new ChartDemo();
- chartD.createBarDemo("bar1.jpg");
- chartD.createPieDemo("pie.jpg");
- }
- //創建柱狀圖
- public void createBarDemo(String jpgname)
- {
- CategoryDataset dataset = getBarDataset();
- JFreeChart chart = ChartFactory.createBarChart3D(
- "水果產量圖", "水果","產量", dataset, PlotOrientation.VERTICAL,
- true,false,false);
- FileOutputStream jpg = null;
- try {
- jpg = new FileOutputStream(jpgname);
- ChartUtilities.writeChartAsJPEG(jpg,0.5f,chart,400,300,null);
- } catch (Exception e) {
- // TODO 自動生成 catch 塊
- e.printStackTrace();
- }
- finally
- {
- try {
- jpg.close();
- } catch (IOException e) {
- // TODO 自動生成 catch 塊
- e.printStackTrace();
- }
- }
- }
- //獲取柱狀圖數據
- private CategoryDataset getBarDataset() {
- DefaultCategoryDataset dataset = new DefaultCategoryDataset();
- dataset.addValue(100, "北京", "蘋果");
- dataset.addValue(200, "上海", "梨子");
- dataset.addValue(300, "南昌", "葡萄");
- dataset.addValue(400, "海南", "香蕉");
- dataset.addValue(500, "北京", "荔枝");
- dataset.addValue(-250, "上海", "荔枝");
- return dataset;
- }
- //創建餅圖
- public void createPieDemo(String jpgname)
- {
- DefaultPieDataset dataset = getPieDataset();
- JFreeChart chart = ChartFactory.createPieChart3D("水果產量", dataset, true, true, true);
- FileOutputStream jpg = null;
- try {
- jpg = new FileOutputStream(jpgname);
- ChartUtilities.writeChartAsJPEG(jpg,0.5f,chart,400,300,null);
- } catch (Exception e) {
- // TODO 自動生成 catch 塊
- e.printStackTrace();
- }
- finally
- {
- try {
- jpg.close();
- } catch (IOException e) {
- // TODO 自動生成 catch 塊
- e.printStackTrace();
- }
- }
- }
- //獲取餅圖數據
- private DefaultPieDataset getPieDataset() {
- DefaultPieDataset dataset = new DefaultPieDataset();
- dataset.setValue("蘋果", 100);
- dataset.setValue("梨子", 200);
- dataset.setValue("葡萄", 300);
- dataset.setValue("荔枝", 400);
- dataset.setValue("香蕉", 500);
- dataset.setValue("棗子", 600);
- return dataset;
- }
- }