要求:运用开源的JFreeChart生成一个柱形图。

新建一个project,将JFreeChar的jar包导入到该project,然后新建一个SalesCountServlet  .java

代码如下:

 

 
  
  1. package com.dr.demo;   
  2.  
  3. import java.awt.Color;  
  4. import java.awt.Font;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileOutputStream;  
  7. import java.io.IOException;   
  8.  
  9. import org.jfree.chart.ChartFactory;  
  10. import org.jfree.chart.ChartUtilities;  
  11. import org.jfree.chart.JFreeChart;  
  12. import org.jfree.chart.axis.CategoryAxis;  
  13. import org.jfree.chart.axis.CategoryLabelPositions;  
  14. import org.jfree.chart.axis.ValueAxis;  
  15. import org.jfree.chart.plot.CategoryPlot;  
  16. import org.jfree.chart.plot.PlotOrientation;  
  17. import org.jfree.chart.title.TextTitle;  
  18. import org.jfree.data.category.CategoryDataset;  
  19. import org.jfree.data.category.DefaultCategoryDataset;   
  20.  
  21. public class SalesCountServlet  {   
  22.  
  23.     protected static void doGet() {  
  24.         System.out.println("图表已经建立!");  
  25.         CategoryDataset dataset = getDataSet();  
  26.         String fileName = "SalesCount.jpg";//文件名称  
  27.         JFreeChart chart = ChartFactory.createBarChart3D("产品销量图"// 图表标题  
  28.                 "产品"// 目录轴的显示标签  
  29.                 "销量"// 数值轴的显示标签  
  30.                 dataset, // 数据集  
  31.                 PlotOrientation.VERTICAL, // 图表方向:水平、垂直  
  32.                 true// 是否显示图例(对于简单的柱状图必须是false)  
  33.                 false// 是否生成工具  
  34.                 false // 是否生成URL链接  
  35.                 );  
  36.         configFont(chart);//设置中文格式   
  37.  
  38.         FileOutputStream fos_jpg = null;  
  39.         try {  
  40.             String statImagePath = "d:";//存放图表的路径  
  41.             try {  
  42.                 fos_jpg = new FileOutputStream(statImagePath+ fileName);  
  43.             } catch (FileNotFoundException e) {  
  44.                 e.printStackTrace();  
  45.             }  
  46.             try {  
  47.                 ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400300,null);  
  48.             } catch (IOException e) {  
  49.                 e.printStackTrace();  
  50.             }  
  51.         } finally {  
  52.             try {  
  53.                 fos_jpg.close();  
  54.             } catch (Exception e) {  
  55.                 e.printStackTrace();  
  56.             }  
  57.         }  
  58.     }  
  59.      public static void configFont(JFreeChart chart){     
  60.             // 配置字体     
  61.             Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴     
  62.             Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴     
  63.             Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部     
  64.             Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题     
  65.             CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象     
  66.             // 图片标题     
  67.             chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));     
  68.             // 底部     
  69.             chart.getLegend().setItemFont(kfont);     
  70.             // X 轴     
  71.             CategoryAxis domainAxis = plot.getDomainAxis();        
  72.             domainAxis.setLabelFont(xfont);// 轴标题     
  73.             domainAxis.setTickLabelFont(xfont);// 轴数值       
  74.             domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色     
  75.             domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示      
  76.             // Y 轴     
  77.             ValueAxis rangeAxis = plot.getRangeAxis();        
  78.             rangeAxis.setLabelFont(yfont);      
  79.             rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色     
  80.             rangeAxis.setTickLabelFont(yfont);       
  81.         }    
  82.  
  83.     private static CategoryDataset getDataSet() {  
  84.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  85.             dataset.addValue(20"销售图表""苹果");  
  86.             dataset.addValue(20"销售图表""梨");  
  87.             dataset.addValue(30"销售图表""香蕉");  
  88.             dataset.addValue(40"销售图表""葡萄");  
  89.             dataset.addValue(50"销售图表""桔子");  
  90.         return dataset;  
  91.     }  
  92.     public static void main(String args[]){  
  93.         doGet();  
  94.     }  
  95. }   
  96.  

 

 

运行程序后就会在d盘根目录下找到一个SalesCount.jpg的文件,打开显示结果如下:

 

希望各位大虾不吝赐教!