使用JFreeChart生成图表

使用JFreeChart生成图表

要求:运用开源的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, 400300,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的文件,打开显示结果如下:

使用JFreeChart生成图表_第1张图片

希望各位大虾不吝赐教!

你可能感兴趣的:(使用JFreeChart生成图表)