要求:運用開源的JFreeChart生成一個柱形圖。
新建一個project,將JFreeChar的jar包導入到該project,然后新建一個SalesCountServlet .java
代碼如下:
package com.dr.demo;

import java.awt.Color;
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.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;


public class SalesCountServlet
{


protected static void doGet()
{
System.out.println("圖表已經建立!");
CategoryDataset dataset = getDataSet();
String fileName = "SalesCount.jpg";//文件名稱
JFreeChart chart = ChartFactory.createBarChart3D("產品銷量圖", // 圖表標題
"產品", // 目錄軸的顯示標簽
"銷量", // 數值軸的顯示標簽
dataset, // 數據集
PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
true, // 是否顯示圖例(對于簡單的柱狀圖必須是false)
false, // 是否生成工具
false // 是否生成URL鏈接
);
configFont(chart);//設置中文格式

FileOutputStream fos_jpg = null;

try
{
String statImagePath = "d:";//存放圖表的路徑

try
{
fos_jpg = new FileOutputStream(statImagePath+ fileName);

} catch (FileNotFoundException e)
{
e.printStackTrace();
}

try
{
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400, 300,null);

} catch (IOException e)
{
e.printStackTrace();
}

} finally
{

try
{
fos_jpg.close();

} catch (Exception e)
{
e.printStackTrace();
}
}
}

public static void configFont(JFreeChart chart)
{
// 配置字體
Font xfont = new Font("宋體",Font.PLAIN,12) ;// X軸
Font yfont = new Font("宋體",Font.PLAIN,12) ;// Y軸
Font kfont = new Font("宋體",Font.PLAIN,12) ;// 底部
Font titleFont = new Font("隸書", Font.BOLD , 25) ; // 圖片標題
CategoryPlot plot = chart.getCategoryPlot();// 圖形的繪制結構對象
// 圖片標題
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// X 軸
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 軸標題
domainAxis.setTickLabelFont(xfont);// 軸數值
domainAxis.setTickLabelPaint(Color.BLUE) ; // 字體顏色
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 橫軸上的label斜顯示
// Y 軸
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE) ; // 字體顏色
rangeAxis.setTickLabelFont(yfont);
}


private static CategoryDataset getDataSet()
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(20, "銷售圖表", "蘋果");
dataset.addValue(20, "銷售圖表", "梨");
dataset.addValue(30, "銷售圖表", "香蕉");
dataset.addValue(40, "銷售圖表", "葡萄");
dataset.addValue(50, "銷售圖表", "桔子");
return dataset;
}

public static void main(String args[])
{
doGet();
}
}


運行程序后就會在d盤根目錄下找到一個SalesCount.jpg的文件,打開顯示結果如下:
希望各位大蝦不吝賜教!