java柱狀圖(2)

上一篇中用純java的方式寫了一個柱狀圖,可是結果非常的難看,下面用第三方插件來搞定這個問題,就是jfreechart,據說java做界面簡直就是搓到爆,僅僅就是好奇一下,just so so

好了,jfeechart安裝的過程我就不說了,網上到處都是,僅僅給出我的代碼和結果


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.junit.experimental.categories.Categories;

public class b
{
	/*
	 * 這個程序用來顯示上一個程序中的柱狀圖
	 * 利用第三方庫jfreechart
	 */
	public static void main(String[] argv)
	{
		BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_BGR);
		TextTitle title = new TextTitle("柱狀圖");
		CategoryDataset data = getdata();
		JFreeChart chart = ChartFactory.createBarChart3D("柱狀圖", "數", "例子", data);
		ChartFrame frame = new ChartFrame("柱狀圖",chart);
		/*frame.pack();
		frame.setVisible(true);*/
		// 自定義設定背景色  
        // chart.setBackgroundPaint(Color.getHSBColor(23,192,223));  
        chart.setBackgroundPaint(Color.WHITE);  
        // 獲得 plot:3dBar爲CategoryPlot  
        CategoryPlot categoryPlot = chart.getCategoryPlot();  
        // 設定圖表數據顯示部分背景色  
        categoryPlot.setBackgroundPaint(Color.BLACK);  
        // 橫座標網格線  
        categoryPlot.setDomainGridlinePaint(Color.RED);  
        // 設置網格線可見  
        categoryPlot.setDomainGridlinesVisible(true);  
        // 縱座標網格線  
        categoryPlot.setRangeGridlinePaint(Color.RED);  
        // 重要的類,負責生成各種效果  
        // BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();  
        // 獲取縱座標  
        NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis();  
        // 設置縱座標的標題字體和大小  
        numberaxis.setLabelFont(new Font("黑體", Font.CENTER_BASELINE, 24));  
        // 設置叢座標的座標值的字體顏色  
        numberaxis.setLabelPaint(Color.BLACK);  
        // 設置叢座標的座標軸標尺顏色  
        numberaxis.setTickLabelPaint(Color.RED);  
        // 座標軸標尺顏色  
        numberaxis.setTickMarkPaint(Color.BLUE);  
        // 叢座標的默認間距值  
        // numberaxis.setAutoTickUnitSelection(true);  
        // 設置叢座標間距值  
        numberaxis.setAutoTickUnitSelection(false);  
        numberaxis.setTickUnit(new NumberTickUnit(150));  
        // 獲取橫座標  
        CategoryAxis domainAxis = categoryPlot.getDomainAxis();  
        // 設置橫座標的標題字體和大小  
        domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 13));  
        // 設置橫座標的座標值的字體顏色  
        domainAxis.setTickLabelPaint(Color.RED);  
        // 設置橫座標的座標值的字體  
        domainAxis.setTickLabelFont(new Font("宋體", Font.PLAIN, 30));  
        // 設置橫座標的顯示  
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));  
        // 這句代碼解決了底部漢字亂碼的問題  
        chart.getLegend().setItemFont(new Font("黑體", 0, 16));  
        // 設置圖例標題  
        Font font = new java.awt.Font("黑體", java.awt.Font.CENTER_BASELINE, 50);  
        //TextTitle title = new TextTitle("項目狀態分佈");  
        title.getBackgroundPaint();  
        title.setFont(font);  
        // 設置標題的字體顏色  
        title.setPaint(Color.RED);  
        chart.setTitle(title);  
        frame.pack();  
        frame.setVisible(true);  
        /*Image image = frame.createImage(500, 500);
        Graphics g = image.getGraphics();
        String filename = "D:\\3.jpg";
        File file = new File(filename);
        if(!file.exists())
        {
        	try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }
        FileOutputStream s = null;
		try {
			s = new FileOutputStream(file);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
        try {
			ImageIO.write(img, "JPEG", s);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
        
	}
	private static CategoryDataset getdata()
	{
		DefaultCategoryDataset data = new DefaultCategoryDataset();
		data.addValue(1, "1", "1");
		data.addValue(2, "2", "2");
		data.addValue(3, "3", "3");
		data.addValue(4, "4", "4");
		data.addValue(5, "5", "5");
		data.addValue(6, "6", "6");
		data.addValue(7, "7", "7");
		data.addValue(8, "8", "8");
		data.addValue(9, "9", "9");
		data.addValue(10, "10", "10");
		return data;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章