以java project为例,首先需要导入需要的jar包:jcommon-1.0.23.jar, jfreechart-1.0.19.jar.

画饼状图示例:

  1. package com.it.jfchart;
  2.  
  3. import java.awt.Font;
  4.  
  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartPanel;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.plot.PiePlot;
  9. import org.jfree.chart.title.LegendTitle;
  10. import org.jfree.chart.title.TextTitle;
  11. import org.jfree.data.general.DefaultPieDataset;
  12. import org.jfree.ui.ApplicationFrame;
  13. import org.jfree.ui.RefineryUtilities;
  14. /**
  15. * jFreeChart画饼状图
  16. * ApplicationFrame是JFreeChart中写好的一个类,使用它就可用一个单独的JFrame来显示图表
  17. */
  18. public class Mypie extends ApplicationFrame {
  19. // 字体设置
  20. private static final Font font = new Font("simsun",Font.ITALIC,22);
  21.  
  22. public Mypie(String title) {
  23. super(title);
  24. setContentPane(new ChartPanel(getChart()));
  25. }
  26.  
  27. /*
  28. * 封装画图所需的数据集对象DefaultPieDataset
  29. */
  30. private static DefaultPieDataset getDataset(){
  31. DefaultPieDataset dataset = new DefaultPieDataset();
  32. dataset.setValue("本科生", 50);
  33. dataset.setValue("研究生", 30);
  34. dataset.setValue("博士生", 20);
  35. return dataset;
  36. }
  37.  
  38. /*
  39. * 返回JFreeChart对象
  40. * JFreeChart对中文支持不好, 所有涉及汉字的部分,必须重新设置字体,否则显示乱码
  41. */
  42. public JFreeChart getChart(){
  43. final DefaultPieDataset dataset = getDataset();
  44. // 有标题,无悬浮提示,无连接(true,false,false)
  45. JFreeChart chart = ChartFactory.createPieChart("XX公司员工学历比例图", dataset,true,false,false);
  46.  
  47. /*
  48. * 重新设置字体
  49. */
  50. // 重新设置标题字体
  51. chart.setTitle(new TextTitle("XX公司员工学历比例图",font));
  52. // 重新设置图例字体
  53. LegendTitle legend = chart.getLegend();
  54. legend.setItemFont(font);
  55. // 重新设置统计表图像字体
  56. PiePlot plot = (PiePlot) chart.getPlot();
  57. plot.setBackgroundAlpha(0.9f);
  58. plot.setLabelFont(font);
  59.  
  60. return chart;
  61. }
  62.  
  63. // 测试方法
  64. public static void main(String[] args){
  65. Mypie demo = new Mypie("XX公司员工学历比例图");
  66. demo.pack();
  67. RefineryUtilities.centerFrameOnScreen(demo);
  68. demo.setVisible(true);
  69. }
  70.  
  71. }



画柱状图示例:

  1. package com.it.jfchart;
  2.  
  3. import java.awt.Font;
  4.  
  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartPanel;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.plot.PlotOrientation;
  9. import org.jfree.chart.title.LegendTitle;
  10. import org.jfree.chart.title.TextTitle;
  11. import org.jfree.data.category.DefaultCategoryDataset;
  12. import org.jfree.ui.ApplicationFrame;
  13. import org.jfree.ui.RefineryUtilities;
  14. /**
  15. * JFreeChart画柱状图
  16. */
  17. public class Mybar extends ApplicationFrame {
  18. // 字体设置
  19. private static final Font font = new Font("simsun",Font.ITALIC,22);
  20.  
  21. public Mybar(String title) {
  22. super(title);
  23. setContentPane(new ChartPanel(getChart()));
  24. }
  25.  
  26. /*
  27. * 封装柱状图所需的数据集对象DefaultCategoryDataset
  28. */
  29. private static DefaultCategoryDataset getDataset(){
  30. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  31. dataset.setValue(50,"本科生","本科生");
  32. dataset.setValue(40,"研究生","研究生");
  33. dataset.setValue(30,"博士生","博士生");
  34. return dataset;
  35. }
  36.  
  37. /*
  38. * 返回JFreeChart对象
  39. * JFreeChart对中文支持不好, 所有涉及汉字的部分,必须重新设置字体,否则显示乱码
  40. */
  41. public JFreeChart getChart(){
  42. final DefaultCategoryDataset dataset = getDataset();
  43. // 有标题,无悬浮提示,无连接(true,false,false)
  44. JFreeChart chart = ChartFactory.createBarChart3D("XX公司员工学历比例图", "学历", "人数", dataset,PlotOrientation.VERTICAL,true,false,false);
  45.  
  46. /*
  47. * 重新设置字体
  48. */
  49. // 重新设置标题字体
  50. chart.setTitle(new TextTitle("XX公司员工学历比例图",font));
  51. // 重新设置图例字体
  52. LegendTitle legend = chart.getLegend();
  53. legend.setItemFont(font);
  54. // 设置X轴坐标上的文字的字体
  55. chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);
  56. // 设置X轴坐标标题的字体
  57. chart.getCategoryPlot().getDomainAxis().setLabelFont(font);
  58. // 设置Y轴坐标上的文字的字体
  59. chart.getCategoryPlot().getRangeAxis().setTickLabelFont(font);
  60. // 设置Y轴坐标标题的字体
  61. chart.getCategoryPlot().getRangeAxis().setLabelFont(font);
  62.  
  63. return chart;
  64. }
  65.  
  66. // 测试方法
  67. public static void main(String[] args){
  68. Mybar demo = new Mybar("XX公司员工学历比例图");
  69. demo.pack();
  70. RefineryUtilities.centerFrameOnScreen(demo);
  71. demo.setVisible(true);
  72. }
  73.  
  74. }







以javaweb project为例,除了上述两个jar包,还需要struts2-jfreechart-plugin-2.3.24.1.jar.

struts.xml 需要定义chart结果类型:

  1. <struts>
  2. <package name="default" namespace="/" extends="struts-default">
  3. <!-- 定义chart结果类型 -->
  4. <result-types>
  5. <result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"/>
  6. </result-types>
  7. ...

result配置如下(饼状图):

  1. <!-- 客户贡献统计图 -->
  2. <action name="contriChart" class="statisreportAction" method="docontriChart">
  3. <result type="chart">
  4. <param name="chart">chart</param>
  5. <param name="height">400</param>
  6. <param name="width">700</param>
  7. </result>
  8. </action>

具体的Action代码如下:

  1.     // 必须加上getChart()方法
  2.     public JFreeChart getChart() {
  3.         return chart;
  4.     }
  5.  
  6. // 客户贡献统计图
  7. public String docontriChart(){
  8. ordHistoryList = srBiz.orderHistoryList(); //获取订单数据
  9. DefaultPieDataset dataset = new DefaultPieDataset();
  10. // 给dataset赋值
  11. for (Orderhistory history : ordHistoryList) {
  12. dataset.setValue(history.getCustomerinfo().getCName(), history.getOTotalaccount());
  13. }
  14. // 实例化chart
  15. chart = ChartFactory.createPieChart("客户贡献统计图", dataset, true, false, false);
  16. // 设置字体
  17. chart.setTitle(new TextTitle("客户贡献统计图",font));
  18. LegendTitle legend = chart.getLegend();
  19. legend.setItemFont(font);
  20. PiePlot plot = (PiePlot) chart.getPlot();
  21. plot.setBackgroundAlpha(0.9f);
  22. plot.setLabelFont(font);
  23.  
  24. return SUCCESS;
  25. }

JSP页面显示(通过click事件来显示统计图):

  1. <%--图片src中写入action名字,执行生成统计图操作 --%>
  2. <div><img id="chart" alt="" src="contriChart" style="display:none; "></div>

js函数:

  1. <script type="text/javascript">
  2. // 显示统计图
  3. function showChart(){
  4. var imgId=document.getElementById("chart");
  5. if(imgId.style.display=="block"){
  6. imgId.style.display="none";
  7. }
  8. else{
  9. imgId.style.display="block";
  10. }
  11. }

JFreeChart插件使用的更多相关文章

  1. JFreeChart插件

    JFreeChart的核心对象. 1. 制图对象 JFreeChart的类是制图对象.常用方法: 方法 说明 Void setAntiAlias(Boolean flag) 设置字体边界模糊 Void ...

  2. 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】

    之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...

  3. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)

    JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...

  4. 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...

  5. 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

    利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...

  6. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  7. JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)

    FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...

  8. JFreeChart生成柱形图(2) (转自 JSP开发技术大全)

    JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...

  9. JFreeChart基础(1) (转自 JSP开发技术大全)

    JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...

随机推荐

  1. LeetCode——48. 旋转图像

    给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: 给定 m ...

  2. 关于http协议的总结

    http协议知识结构图 简介 HTTP(HyperText Transfer Protocol),超文本传输协议,是Web应用的基本协议 HTTP规定了客户端(浏览器)和服务器之间的通信步骤以及通信时 ...

  3. 游程编码run length code

    今天突然看到一个名词,游程编码.也叫行程编码. 简单理解就是,几个相同连续的字符,然后用数字统计表示. 举个例子: aaaabbbccc 用游程编码的表示就是4a3b3c 如果:连续字符只有一个 那么 ...

  4. F - No Link, Cut Tree! Gym - 101484F

    Marge is already preparing for Christmas and bought a beautiful tree, decorated with shiny ornaments ...

  5. Java之异常的处理(try-catch)

    import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java. ...

  6. mysql免安装版 win10

    1.在官网中下载免安装版:https://dev.mysql.com/downloads/mysql/ 2.解压下载后的文件,新建 data 文件夹和 my.ini 文件  3.打开 my.ini 文 ...

  7. Java复习(四)类的重用

    4.1类的继承 Java只支持类的单继承,每一个子类只能有一个直接父类. #继承的语法 class childClass extends parentClass { //类体 } 子类不能直接访问从父 ...

  8. 手机APP例如抖音,让 people‘s 注意力集中到了 社会进化的 优胜部分 (优胜劣汰,什么是优) + 真善美,的 “美” , 促进了2极分化, 会产生强者俞强,弱者越弱,确实促进了信息的流通,传播了有用的东东 产生了独特的价值 而 如何 能计算出这些价值呢, 需要 数学 金融 财务 货币 量化吗

    手机APP例如抖音,让      people‘s  注意力集中到了  社会进化的 优胜部分  (优胜劣汰,什么是优)   +     真善美,的  “美”        , 促进了2极分化, 会产生 ...

  9. Linux虚拟机添加硬盘

    任务:添加1块硬盘,并且分1个区,挂载到/bak 第一.插上硬盘 第二.分区 第三.格式化(定义:文件系统的类型)  FAT,FAT32,NTFS,ext1,ext2,ext3,ext4,.... 第 ...

  10. node安装依赖

    node 版本:v6.11.2 npm 版本:3.10.10 开发(在UI目录下) # 安装依赖 npm install    ## 若上述不行则采取下面命令 npm install --regist ...