小試験JFreeChart柱状図と餅状図

3936 ワード


暇な時、レポート技術を勉強して、現在オープンソースのJFreeChartを見つけて、最もよく使われる柱状図と餅状図を書いて記録します.
 
jarパッケージをインポートするには:
 
1、jfreechart-1.0.14.jar
2、jcommon-1.0.17.jar
 
他は説明せずにコードを直接見る
 
package jfreechart;

import java.awt.Font;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

public class TestJfreeChart {

	public static void main(String[] args) throws Exception {
		// 
		showBarChart();
		
		// 
		showPieChart();
	}

	private static void showBarChart() throws IOException,
			FileNotFoundException {
		CategoryDataset dataset = getDataSet2();
		
		JFreeChart barChart = ChartFactory.createBarChart3D(" ", " ", " ",  
				dataset,PlotOrientation.VERTICAL, true, true, true);
		
		CategoryPlot  plot = (CategoryPlot) barChart.getPlot();
		CategoryAxis domainAxis = plot.getDomainAxis();
		ValueAxis rangeAxis = plot.getRangeAxis();
		
		Font font = new Font(" ", Font.BOLD, 12);
		
		barChart.getTitle().setFont(font );
		barChart.getLegend().setItemFont(font);
		
		domainAxis.setLabelFont(font);
		domainAxis.setTickLabelFont(font);
		rangeAxis.setLabelFont(font);
		rangeAxis.setTickLabelFont(font);
		
		ChartUtilities.writeChartAsJPEG(new FileOutputStream("C:/bar.jpg"),
				barChart, 1000, 700);
		
		ChartFrame frame = new ChartFrame(" ", barChart);
		
		frame.pack();
		frame.setVisible(true);
	}

	private static CategoryDataset getDataSet2() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();

		dataset.addValue(78, "", "C++ ");
		dataset.addValue(120, "", "JAVA ");
		dataset.addValue(65, "", "JS ");
		dataset.addValue(20, "", " ");
		dataset.addValue(5, "", " ");

		return dataset;
	}

	private static void showPieChart() throws Exception {
		DefaultPieDataset dataset = getDataSet();
		
		JFreeChart pieChart = ChartFactory.createPieChart(" ", dataset, true, true, true);

		PiePlot plot = (PiePlot) pieChart.getPlot();
		
		Font font = new Font(" ", Font.BOLD, 12);
		plot.setLabelFont(font);
		pieChart.getLegend().setItemFont(font);
		pieChart.getTitle().setFont(font);
		
		ChartUtilities.writeChartAsJPEG(new FileOutputStream("C:/pie.jpg"), 
				pieChart, 1000, 700);
		
		ChartFrame frame =  new ChartFrame(" ", pieChart);
		
		frame.pack();
		
		frame.setVisible(true);
	}

	private static DefaultPieDataset getDataSet() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		
		dataset.setValue("C++ ", 78);
		dataset.setValue("JAVA ", 120);
		dataset.setValue("JS ", 65);
		dataset.setValue(" ", 20);
		dataset.setValue(" ", 5);
		return dataset;
	}
}

 
 
生成された効果図:
 
 
もういい、写真は見せない.本当にiteyeのアップロードのスピードに耐えられなくて、まるで穴のお父さん......