1. package com.potevio.rnd;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import org.jfree.chart.ChartFactory;
  7. import org.jfree.chart.ChartUtilities;
  8. import org.jfree.chart.JFreeChart;
  9. import org.jfree.chart.plot.CategoryPlot;
  10. import org.jfree.chart.plot.PlotOrientation;
  11. import org.jfree.data.category.CategoryDataset;
  12. import org.jfree.data.general.DatasetUtilities;
  13. public class CreateJFreeChartBar {
  14. /**
  15. * 创建JFreeChart Bar Chart(柱状图)
  16. */
  17. public static void main(String[] args) {
  18. //步骤1:创建CategoryDataset对象(准备数据)
  19. CategoryDataset dataset = createDataset();
  20. //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
  21. JFreeChart freeChart = createChart(dataset);
  22. //步骤3:将JFreeChart对象输出到文件,Servlet输出流等
  23. saveAsFile(freeChart, "F:\\jfreechart\\bar.png", 500, 400);
  24. }
  25. //保存为文件
  26. public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
  27. FileOutputStream out = null;
  28. try {
  29. File outFile = new File(outputPath);
  30. if (!outFile.getParentFile().exists()) {
  31. outFile.getParentFile().mkdirs();
  32. }
  33. out = new FileOutputStream(outputPath);
  34. //保存为PNG文件
  35. ChartUtilities.writeChartAsPNG(out, chart, weight, height);
  36. //保存为JPEG文件
  37. //ChartUtilities.writeChartAsJPEG(out, chart, weight, height);
  38. out.flush();
  39. } catch (FileNotFoundException e) {
  40. e.printStackTrace();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. } finally {
  44. if (out != null) {
  45. try {
  46. out.close();
  47. } catch (IOException e) {
  48. //do nothing
  49. }
  50. }
  51. }
  52. }
  53. //根据CategoryDataset生成JFreeChart对象
  54. public static JFreeChart createChart(CategoryDataset categoryDataset) {
  55. JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo",    //标题
  56. "产品",    //categoryAxisLabel (category轴,横轴,X轴的标签)
  57. "数量",    //valueAxisLabel(value轴,纵轴,Y轴的标签)
  58. categoryDataset, // dataset
  59. PlotOrientation.VERTICAL,
  60. true, // legend
  61. false, // tooltips
  62. false); // URLs
  63. //以下的设置可以由用户定制,也可以省略
  64. CategoryPlot  plot = (CategoryPlot) jfreechart.getPlot();
  65. //背景色 透明度
  66. plot.setBackgroundAlpha(0.5f);
  67. //前景色 透明度
  68. plot.setForegroundAlpha(0.5f);
  69. //其它设置可以参考 CategoryPlot
  70. return jfreechart;
  71. }
  72. /**
  73. * 创建CategoryDataset对象
  74. *
  75. */
  76. public static CategoryDataset createDataset() {
  77. String []rowKeys = {"One", "Two", "Three"};
  78. String []colKeys = {"1987", "1997", "2007"};
  79. double [][] data = {
  80. {50, 20, 30},
  81. {20, 10D, 40D},
  82. {40, 30.0008D, 38.24D},
  83. };
  84. //也可以使用以下代码
  85. //DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
  86. //categoryDataset.addValue(10, "rowKey", "colKey");
  87. return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
  88. }
  89. }
  1. package com.potevio.rnd;
  2.  
  3. import java.io.File;

  4. import java.io.FileNotFoundException;

  5. import java.io.FileOutputStream;

  6. import java.io.IOException;
  7.  
  8. import org.jfree.chart.ChartFactory;

  9. import org.jfree.chart.ChartUtilities;

  10. import org.jfree.chart.JFreeChart;

  11. import org.jfree.chart.plot.CategoryPlot;

  12. import org.jfree.chart.plot.PlotOrientation;

  13. import org.jfree.data.category.CategoryDataset;

  14. import org.jfree.data.general.DatasetUtilities;
  15.  
  16. public class CreateJFreeChartBar {
  17. /**
  18.  * 创建JFreeChart Bar Chart(柱状图)
  19.  */
  20. public static void main(String[] args) {
  21.     //步骤1:创建CategoryDataset对象(准备数据)
  22.     CategoryDataset dataset = createDataset();
  23.     //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
  24.     JFreeChart freeChart = createChart(dataset);
  25.     //步骤3:将JFreeChart对象输出到文件,Servlet输出流等
  26.     saveAsFile(freeChart, "F:\\jfreechart\\bar.png", 500, 400);
  27. }   
  28. //保存为文件
  29. public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
  30.     FileOutputStream out = null;
  31.     try {
  32.         File outFile = new File(outputPath);
  33.         if (!outFile.getParentFile().exists()) {
  34.             outFile.getParentFile().mkdirs();
  35.         }
  36.         out = new FileOutputStream(outputPath);
  37.         //保存为PNG文件
  38.         ChartUtilities.writeChartAsPNG(out, chart, weight, height);
  39.         //保存为JPEG文件
  40.         //ChartUtilities.writeChartAsJPEG(out, chart, weight, height);
  41.         out.flush();
  42.     } catch (FileNotFoundException e) {
  43.         e.printStackTrace();
  44.     } catch (IOException e) {
  45.         e.printStackTrace();
  46.     } finally {
  47.         if (out != null) {
  48.             try {
  49.                 out.close();
  50.             } catch (IOException e) {
  51.                 //do nothing
  52.             }
  53.         }
  54.     }
  55. }   
  56. //根据CategoryDataset生成JFreeChart对象
  57. public static JFreeChart createChart(CategoryDataset categoryDataset) {
  58.     JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo",    //标题
  59.             "产品",    //categoryAxisLabel (category轴,横轴,X轴的标签)
  60.             "数量",    //valueAxisLabel(value轴,纵轴,Y轴的标签)
  61.             categoryDataset, // dataset
  62.             PlotOrientation.VERTICAL,
  63.             true, // legend
  64.             false, // tooltips
  65.             false); // URLs   
  66.     //以下的设置可以由用户定制,也可以省略
  67.     CategoryPlot  plot = (CategoryPlot) jfreechart.getPlot();
  68.     //背景色 透明度
  69.     plot.setBackgroundAlpha(0.5f);
  70.     //前景色 透明度
  71.     plot.setForegroundAlpha(0.5f);
  72.     //其它设置可以参考 CategoryPlot   
  73.     return jfreechart;
  74. }   
  75. /**
  76.  * 创建CategoryDataset对象
  77.  *
  78.  */
  79. public static CategoryDataset createDataset() {   
  80.     String []rowKeys = {"One", "Two", "Three"};
  81.     String []colKeys = {"1987", "1997", "2007"};   
  82.     double [][] data = {
  83.             {50, 20, 30},
  84.             {20, 10D, 40D},
  85.             {40, 30.0008D, 38.24D},
  86.     };   
  87.     //也可以使用以下代码
  88.     //DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
  89.     //categoryDataset.addValue(10, "rowKey", "colKey");   
  90.     return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
  91. }
  92.  
  93. }

运行效果图:

jFreeChart利用CategoryDatase,ChartFactory.createBarChart生成的柱状图的更多相关文章

  1. 利用Maven把项目生成jar包供其他项目使用

    每当搭建框架时,第一步就是为系统整理一个接一个的jar包.用多了就开始深思,如何把自己的项目也整成jar包,供他人使用呢? 近期一直在看徐晓斌所著:<Maven实战>.因自己学识不够,只是 ...

  2. 利用strut2标签自动生成form前端验证代码

    利用strut2标签自动生成form前端验证代码,使用到的技术有1.struts2标签,如<s:form> <s:textfieled>2.struts2读取*Validati ...

  3. 【转】Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    原文链接:http://www.cnblogs.com/quanyongan/p/3152290.html 最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和  ...

  4. 利用TPC-H为MYSQL生成数据

    ## 利用TPC-H为MYSQL生成数据 导言 这篇文章是看了joyee写的TPC-H数据导入MySQL教程以及另一篇网上的MySQL TPCH测试工具简要手册 后写的,有些内容是完全转载自以上两篇文 ...

  5. 利用ir.sequence自动生成序列号

    利用ir.sequence自动生成序列号 什么是序列号 可以这么理解,我有一个产品序号,编码的前缀是SOP,后缀是0001~9999的序号,没生成一个产品就自动流水加一,序列号不会重复,odoo中的i ...

  6. webapi 利用webapiHelp和swagger生成接口文档

    webapi 利用webapiHelp和swagger生成接口文档.均依赖xml(需允许项目生成注释xml) webapiHelp:微软技术自带,仅含有模块.方法.请求-相应参数的注释. swagge ...

  7. Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynamic- ...

  8. 利用PHP QR Code生成二维码(带logo)

    转自:http://www.cnblogs.com/txw1958/p/phpqrcode.html HP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示 ...

  9. NASNet学习笔记——   核心一:延续NAS论文的核心机制使得能够自动产生网络结构;    核心二:采用resnet和Inception重复使用block结构思想;    核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

    from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transfer ...

随机推荐

  1. 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒

    下面程序使用了两种方法计算两个时间相差 天,小时,分钟,秒 package jodotest; import java.text.ParseException; import java.text.Si ...

  2. maven 打包时mapper.xml打不进去问题

    首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...

  3. 基于Centos开启samba服务

    1.安装samba服务: yum -y install samba samba-common samba-client2.查看samba服务状态: service smb status: 正常状态是: ...

  4. NPOI+反射 实现快速导出

    只是觉得这样很方便 记录一下 公司有封装的方法,不过是查出的Table类型,每次用的时候很都很烦,处理数据也不方便,最主要的是我也没耐心去看,反正在我看来很麻烦,用的时候很头疼.还是习惯通过Model ...

  5. promise异步编程的原理

    一.起源 JavaScript中的异步由来已久,不论是定时函数,事件处理函数还是ajax异步加载都是异步编程的一种形式,我们现在以nodejs中异步读取文件为例来编写一个传统意义的异步函数: var ...

  6. Java发送新浪微博的问题

    一,背景 2017-06-26微博公告替换了一些接口,导致以前的: statuses/repost 转发一条微博 statuses/update 发布一条微博 statuses/upload 上传图片 ...

  7. (转)java 多线程 CountDownLatch用法

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); pu ...

  8. ui-router ^1.x在ng1中使用state events

    官网信息:https://ui-router.github.io/ng1/docs/latest/modules/ng1_state_events.html Legacy state events P ...

  9. css层叠样式表

    css的三种声明方式    1.行内样式        通过每个标签都有的style属性        <div style="color:red;">黄卫星说没有内容 ...

  10. linux c++如何学习

    最近有人问我,linux c++工资这么高,怎么学习才能入门,只要有个项目经验能进入一个公司即可. 然后我就说了linux c++开发的整个流程,然后用项目作为目标进行学习,这其实是一种以目的为主导的 ...