JFreeChar生成柱状图

前一篇文章说明了JFreeChar生成柱状图以及解决中文只能显示问方框的问题,本文主要记录柱状图的显示案例,可供初学者参考:

先看一个简单的柱状图生成案例:

  1. package org.ml.servlet;  
  2.   
  3. import java.awt.Font;  
  4. import java.io.IOException;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. import javax.servlet.http.HttpServlet;  
  10.   
  11. import org.jfree.chart.ChartFactory;  
  12. import org.jfree.chart.ChartUtilities;  
  13. import org.jfree.chart.JFreeChart;  
  14. import org.jfree.chart.plot.CategoryPlot;  
  15. import org.jfree.chart.plot.PlotOrientation;  
  16. import org.jfree.chart.title.TextTitle;  
  17. import org.jfree.data.category.CategoryDataset;  
  18. import org.jfree.data.category.DefaultCategoryDataset;  
  19. import org.jfree.data.general.DefaultPieDataset;  
  20.   
  21. public class ChartDemoServlet extends HttpServlet {  
  22.   
  23.     private static final long serialVersionUID = 1L;  
  24.   
  25.     public ChartDemoServlet() {  
  26.         super();  
  27.     }  
  28.   
  29.     /** 
  30.      * 创建一个数据集合 
  31.      *  
  32.      * @return 
  33.      */  
  34.     private static DefaultPieDataset getDataSet() {  
  35.         DefaultPieDataset dataset = new DefaultPieDataset();  
  36.         dataset.setValue("苹果"100);  
  37.         dataset.setValue("梨子"200);  
  38.         dataset.setValue("葡萄"300);  
  39.         dataset.setValue("香蕉"400);  
  40.         dataset.setValue("荔枝"500);  
  41.         return dataset;  
  42.     }  
  43.   
  44.     @Override  
  45.     public void service(ServletRequest req, ServletResponse res)  
  46.             throws ServletException, IOException {  
  47.         res.setContentType("image/jpeg");// 将输出设置为image/jepg格式  
  48.            
  49.         CategoryDataset dataset = getDataSet2();// 取得数据集合  
  50.         JFreeChart chart2 = ChartFactory.createBarChart3D("水果产量图"// 图表标题  
  51.                 "水果"// 目录轴的显示标签  
  52.                 "产量"// 数值轴的显示标签  
  53.                 dataset, // 数据集  
  54.                 PlotOrientation.VERTICAL, // HORIZONTAL,// 图表方向:水平、垂直  
  55.                 false// 是否显示图例(对于简单的柱状图是false,因为只有一种,没有必要显示)  
  56.                 false// 是否生成工具  
  57.                 false // 是否生成URL链接  
  58.                 );  
  59.         Font titleFont = new Font("黑体", Font.BOLD, 20);    
  60.         Font plotFont = new Font("宋体", Font.PLAIN, 16);     
  61.           
  62.         TextTitle textTitle2 = chart2.getTitle();  
  63.         textTitle2.setFont(titleFont);// 为标题设置上字体  
  64.    
  65.         CategoryPlot categoryPlot = chart2.getCategoryPlot();  
  66.         categoryPlot.getRangeAxis().setLabelFont(plotFont);// 设置Y轴标识字体  
  67.         categoryPlot.getDomainAxis().setLabelFont(plotFont);// 设置X轴标识字体  
  68.         categoryPlot.getDomainAxis().setTickLabelFont(plotFont);// 设置轴标记的坐标的标记字体  
  69.    
  70.         ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart2,  
  71.                 800450null);// 输出图表  
  72.     }  
  73.    
  74.     private static CategoryDataset getDataSet2() {  
  75.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  76.         dataset.addValue(100"""苹果");  
  77.         dataset.addValue(200"""梨子");  
  78.         dataset.addValue(300"""葡萄");  
  79.         dataset.addValue(400"""香蕉");  
  80.         dataset.addValue(500"""荔枝");  
  81.         return dataset;  
  82.     }  
  83. }  

这是一个简单的柱状图实例,只有各种水果产量之间的简单对比,下面看一个对各个城市之间的水果产量进行对比的例子:

  1. package org.ml.servlet;  
  2.   
  3. import java.awt.Font;  
  4. import java.io.IOException;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. import javax.servlet.http.HttpServlet;  
  10.   
  11. import org.jfree.chart.ChartFactory;  
  12. import org.jfree.chart.ChartUtilities;  
  13. import org.jfree.chart.JFreeChart;  
  14. import org.jfree.chart.plot.CategoryPlot;  
  15. import org.jfree.chart.plot.PlotOrientation;  
  16. import org.jfree.chart.title.LegendTitle;  
  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 ChartDemoServlet extends HttpServlet {  
  22.   
  23.     private static final long serialVersionUID = 1L;  
  24.   
  25.     public ChartDemoServlet() {  
  26.         super();  
  27.     }  
  28.   
  29.     /** 
  30.      * 创建一个数据集合 
  31.      *  
  32.      * @return 
  33.      */  
  34.     // private static DefaultPieDataset getDataSet() {  
  35.     // DefaultPieDataset dataset = new DefaultPieDataset();  
  36.     // dataset.setValue("苹果", 100);  
  37.     // dataset.setValue("梨子", 200);  
  38.     // dataset.setValue("葡萄", 300);  
  39.     // dataset.setValue("香蕉", 400);  
  40.     // dataset.setValue("荔枝", 500);  
  41.     // return dataset;  
  42.     // }  
  43.   
  44.     @Override  
  45.     public void service(ServletRequest req, ServletResponse res)  
  46.             throws ServletException, IOException {  
  47.         res.setContentType("image/jpeg");// 将输出设置为image/jepg格式   
  48.   
  49.         CategoryDataset dataset = getDataSet3();// 取得数据集合  
  50.         JFreeChart chart2 = ChartFactory.createBarChart3D("水果产量图"// 图表标题  
  51.                 "水果"// 目录轴的显示标签  
  52.                 "产量"// 数值轴的显示标签  
  53.                 dataset, // 数据集  
  54.                 PlotOrientation.VERTICAL, // HORIZONTAL,// 图表方向:水平、垂直  
  55.                 true// 是否显示图例(对于简单的柱状图是false,因为只有一种,没有必要显示)  
  56.                 false// 是否生成工具  
  57.                 false // 是否生成URL链接  
  58.                 );  
  59.                   
  60.                   
  61.         Font titleFont = new Font("黑体", Font.BOLD, 20);    
  62.         Font plotFont = new Font("宋体", Font.PLAIN, 16);    
  63.         Font LegendFont = new Font("楷体", Font.PLAIN, 18);   
  64.           
  65.         TextTitle textTitle2 = chart2.getTitle();  
  66.         textTitle2.setFont(titleFont);// 为标题设置上字体  
  67.   
  68.         LegendTitle legend2 = chart2.getLegend(0);  
  69.         legend2.setItemFont(LegendFont);// 为图例说明设置字体  
  70.   
  71.         CategoryPlot categoryPlot = chart2.getCategoryPlot();  
  72.         categoryPlot.getRangeAxis().setLabelFont(plotFont);// 设置Y轴标识字体  
  73.         categoryPlot.getDomainAxis().setLabelFont(plotFont);// 设置X轴标识字体  
  74.         categoryPlot.getDomainAxis().setTickLabelFont(plotFont);// 设置轴标记的坐标的标记字体  
  75.    
  76.         ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart2,  
  77.                 800450null);// 输出图表  
  78.     }  
  79.   
  80.     private CategoryDataset getDataSet3() {  
  81.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  82.         dataset.addValue(100"北京""苹果");  
  83.         dataset.addValue(100"上海""苹果");  
  84.         dataset.addValue(100"广州""苹果");  
  85.         dataset.addValue(200"北京""梨子");  
  86.         dataset.addValue(200"上海""梨子");  
  87.         dataset.addValue(200"广州""梨子");  
  88.         dataset.addValue(300"北京""葡萄");  
  89.         dataset.addValue(300"上海""葡萄");  
  90.         dataset.addValue(300"广州""葡萄");  
  91.         dataset.addValue(400"北京""香蕉");  
  92.         dataset.addValue(400"上海""香蕉");  
  93.         dataset.addValue(400"广州""香蕉");  
  94.         dataset.addValue(500"北京""荔枝");  
  95.         dataset.addValue(500"上海""荔枝");  
  96.         dataset.addValue(500"广州""荔枝");  
  97.         return dataset;  
  98.     }   
  99. }  
运行结果如下:



JFreeChar生成柱状图的方式和饼状图的大体一致,如果不清楚可以参考这里(点击进入).

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值