今天有小伙伴问到我怎么使用jfreeChat生成图标,去年就有一个这方便的的总结,今天再遇到,就总结出来,供大家参考:

第一个:

  1. 创建柱状图,效果图如下:

  1. 柱状图代码如下:
  1. package cn.xfz.image;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5.  
  6. import org.jfree.chart.ChartFactory;
  7. import org.jfree.chart.ChartFrame;
  8. import org.jfree.chart.JFreeChart;
  9. import org.jfree.chart.axis.CategoryAxis;
  10. import org.jfree.chart.axis.ValueAxis;
  11. import org.jfree.chart.plot.CategoryPlot;
  12. import org.jfree.chart.plot.PlotOrientation;
  13. import org.jfree.chart.title.LegendTitle;
  14. import org.jfree.chart.title.TextTitle;
  15. import org.jfree.data.category.CategoryDataset;
  16. import org.jfree.data.general.DatasetUtilities;
  17.  
  18. /**
  19. * 创建柱状图
  20. * @author Administrator
  21. *
  22. */
  23. public class CreateBarChartA {
  24.  
  25. public static void main(String[] args) {
  26. //3D柱状图
  27. makeBarChar3D();
  28. }
  29.  
  30. /**
  31. * 内部类
  32. * 获得数据及
  33. * @return
  34. */
  35. public static CategoryDataset getDataset(){
  36.  
  37. //定义一个数组,声明每组要显示的数据
  38. String [] rowKeys={"CPU","硬盘","内存"};
  39. //定义显示多少组
  40. String [] columnKeys={"惠州","上海","深圳","北京","云南"};
  41.  
  42. //定义一个二维数组
  43. double [][] data=new double[][]{
  44. {100,356,524,456,42},
  45. {200,350,124,256,142},
  46. {100,156,324,406,342}
  47. };
  48. // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
  49. /*CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,data);
  50.  
  51. return dataset;
  52. */
  53.  
  54. CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
  55. rowKeys, columnKeys, data);
  56.  
  57. return dataset;
  58. }
  59.  
  60. /**
  61. * 生成立体柱状图
  62. */
  63. public static void makeBarChar3D(){
  64.  
  65. String title="电脑配件3月的销售量";
  66.  
  67. // 1.获得数据集
  68. CategoryDataset dataset = getDataset();
  69.  
  70. JFreeChart chart = ChartFactory.createBarChart3D(title,
  71.  
  72. "配件", //目录轴显示的标签
  73. "销量", //数值轴显示的标签
  74. dataset,
  75. PlotOrientation.VERTICAL, //图表显示的方向
  76. true, //是否生成图例
  77. true, //是否生成工具提示
  78. true //是否生成链接路径
  79. );
  80.  
  81. //设置标题字体
  82. Font font = new Font("宋体",Font.BOLD,18);
  83. TextTitle textTitle = new TextTitle();
  84. textTitle.setFont(font);
  85.  
  86. chart.setTitle(textTitle);
  87.  
  88. //设置背景颜色RGB格式
  89. chart.setBackgroundPaint(new Color(255,255,255));
  90.  
  91. //获得柱状图的plot对象
  92. CategoryPlot plot = chart.getCategoryPlot();
  93.  
  94. //取得X轴
  95. CategoryAxis categoryAxis = plot.getDomainAxis();
  96. //设置X轴显示的标签的字体
  97. categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 16));
  98. //设置X轴标记的字体
  99. categoryAxis.setTickLabelFont(new Font("宋体",Font.TRUETYPE_FONT,16));
  100.  
  101. //取得Y轴
  102. ValueAxis rangeAxis = plot.getRangeAxis();
  103. //设置Y轴显示的标签的字体
  104. rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 16));
  105.  
  106. //获得legend
  107. LegendTitle legend = chart.getLegend();
  108. legend.setItemFont(new Font("宋体", Font.BOLD, 16));
  109.  
  110. //创建图标的窗体
  111. ChartFrame frame = new ChartFrame(title, chart, true);
  112. //窗体大小设置为自动适应
  113. frame.pack();
  114. //设置为可见
  115. frame.setVisible(true);
  116.  
  117. }
  118. }

第二个:字体设置后的柱状图 ,效果图如下:

 代码如下:

  1. package cn.xfz.image;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5.  
  6. import org.jfree.chart.ChartFactory;
  7. import org.jfree.chart.ChartFrame;
  8. import org.jfree.chart.JFreeChart;
  9. import org.jfree.chart.StandardChartTheme;
  10. import org.jfree.chart.axis.CategoryAxis;
  11. import org.jfree.chart.axis.NumberAxis;
  12. import org.jfree.chart.plot.CategoryPlot;
  13. import org.jfree.chart.plot.PlotOrientation;
  14. import org.jfree.chart.title.LegendTitle;
  15. import org.jfree.chart.title.TextTitle;
  16. import org.jfree.data.category.CategoryDataset;
  17. import org.jfree.data.general.DatasetUtilities;
  18.  
  19. /**
  20. * 创建柱状图
  21. * */
  22. public class CreateBarcharB {
  23.  
  24. public static void main(String[] args) {
  25. //3D柱状图
  26. makeBarChart3D();
  27. }
  28. /**
  29. * 获得数据集。
  30. *
  31. * @return org.jfree.data.category.CategoryDataset
  32. */
  33. private static CategoryDataset getDataset() {
  34. // 定义一个数组声明每组需要体现的数据
  35. String[] rowKeys = { "CPU", "硬盘", "内存" };
  36. // 定义有多少组
  37. String[] columnKeys = { "北京", "上海", "广州", "南京", "深圳" };
  38.  
  39. // 各个组的数据
  40. double[][] data = new double[][] { { 751, 800, 260, 600, 200 },
  41. { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } };
  42. // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
  43. CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
  44. rowKeys, columnKeys, data);
  45.  
  46. return dataset;
  47. }
  48.  
  49. /**
  50. * 在工厂里直接设置字体
  51. * 生成柱状图。
  52. */
  53. public static void makeBarChart3D() {
  54.  
  55. String title = "电脑配件三月销量";
  56.  
  57. // 1.获得数据集
  58. CategoryDataset dataset = getDataset();
  59.  
  60. //处理中文乱码
  61. StandardChartTheme chartTheme = new StandardChartTheme("CN");
  62. //标题
  63. chartTheme.setExtraLargeFont(new Font("宋体",Font.PLAIN,16));
  64. //图例
  65. chartTheme.setRegularFont(new Font("宋体",Font.PLAIN,16));
  66. //轴向字体
  67. chartTheme.setLargeFont(new Font("宋体",Font.PLAIN,16));
  68.  
  69. ChartFactory.setChartTheme(chartTheme);
  70.  
  71. // 2.创建一个柱状图
  72. JFreeChart chart = ChartFactory.createBarChart3D(title, // 图表标题
  73. "配件", // 目录轴的显示标签
  74. "销量", // 数值轴的显示标签
  75. dataset, // 数据集
  76. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
  77. true, // 是否显示图例 legend
  78. true, // 是否生成工具(提示) 提示
  79. true // 是否生成URL链接
  80. );
  81.  
  82. // 创建图表的窗体
  83. ChartFrame frame = new ChartFrame(title, chart, true);
  84. // 窗体的大小设置为自适应
  85. frame.pack();
  86. // 设置为可见
  87. frame.setVisible(true);
  88.  
  89. }
  90.  
  91. }

第三个:线型图,效果图如下

代码如下:

  1. package cn.xfz.image;
  2.  
  3. import java.awt.Font;
  4.  
  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartFrame;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.StandardChartTheme;
  9. import org.jfree.chart.plot.PlotOrientation;
  10. import org.jfree.data.category.CategoryDataset;
  11. import org.jfree.data.general.DatasetUtilities;
  12.  
  13. /**
  14. * 创建线型图
  15. *
  16. */
  17. public class CreateLineChart {
  18.  
  19. public static void main(String[] args) {
  20. //折线图
  21. makeLineChart();
  22. }
  23.  
  24. /**
  25. * 获得数据集。
  26. *
  27. * @return org.jfree.data.category.CategoryDataset
  28. */
  29. private static CategoryDataset getDataset() {
  30. // 定义一个数组声明每组需要体现的数据
  31. String[] rowKeys = { "CPU", "硬盘", "内存" };
  32. // 定义有多少组
  33. String[] columnKeys = { "北京", "上海", "广州", "南京", "深圳" };
  34.  
  35. // 各个组的数据
  36. double[][] data = new double[][] { { 751, 800, 260, 600, 200 },
  37. { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } };
  38. // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
  39. CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
  40. rowKeys, columnKeys, data);
  41.  
  42. return dataset;
  43. }
  44.  
  45. /**
  46. * 生成折现图
  47. */
  48. public static void makeLineChart(){
  49. String title = "电脑配件三月销量";
  50.  
  51. // 1.获得数据集
  52. CategoryDataset dataset = getDataset();
  53.  
  54. //处理中文乱码
  55. StandardChartTheme chartTheme = new StandardChartTheme("CN");
  56. //标题
  57. chartTheme.setExtraLargeFont(new Font("宋体",Font.PLAIN,16));
  58. //图例
  59. chartTheme.setRegularFont(new Font("宋体",Font.PLAIN,16));
  60. //轴向字体
  61. chartTheme.setLargeFont(new Font("宋体",Font.PLAIN,16));
  62.  
  63. ChartFactory.setChartTheme(chartTheme);
  64.  
  65. JFreeChart chart = ChartFactory.createLineChart(title,
  66. "配件", // 目录轴的显示标签
  67. "销量", // 数值轴的显示标签
  68. dataset, // 数据集
  69. PlotOrientation.VERTICAL, // 图表方向:水平、垂直
  70. true, // 是否显示图例 legend
  71. true, // 是否生成工具(提示) 提示
  72. false // 是否生成URL链接
  73. );
  74.  
  75. // 创建图表的窗体
  76. ChartFrame frame = new ChartFrame(title, chart, true);
  77. // 窗体的大小设置为自适应
  78. frame.pack();
  79. // 设置为可见
  80. frame.setVisible(true);
  81. }
  82.  
  83. }

第四个:扇形图,效果图如下

代码如下:

  1. package cn.xfz.image;
  2.  
  3. import java.awt.Font;
  4.  
  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartFrame;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.StandardChartTheme;
  9. import org.jfree.data.general.DefaultPieDataset;
  10.  
  11. /**
  12. * 生成扇形图
  13. *
  14. */
  15. public class CreatePieChart {
  16.  
  17. public static void main(String[] args) {
  18. //生成扇形图
  19. makePieChart3D();
  20. }
  21.  
  22. /**
  23. * 获取结果集
  24. * @return
  25. */
  26. public static DefaultPieDataset getDataset(){
  27.  
  28. DefaultPieDataset dataset = new DefaultPieDataset();
  29.  
  30. dataset.setValue("研发人员", 35);
  31. dataset.setValue("市场策划人员", 10);
  32. dataset.setValue("市场推广人员", 25);
  33. dataset.setValue("网络维护人员", 5);
  34. dataset.setValue("财务人员", 15);
  35.  
  36. return dataset;
  37.  
  38. }
  39.  
  40. /**
  41. * 生成扇形图
  42. */
  43. public static void makePieChart3D(){
  44.  
  45. String title = "各部门人员比例";
  46. // 获得数据集
  47. DefaultPieDataset dataset = getDataset();
  48.  
  49. // 处理中文乱码
  50. StandardChartTheme chartTheme = new StandardChartTheme("CN");
  51. // 标题
  52. chartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 20));
  53. // legend
  54. chartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 18));
  55. // 轴向字体
  56. chartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
  57. ChartFactory.setChartTheme(chartTheme);
  58.  
  59. JFreeChart chart = ChartFactory.createPieChart3D(
  60. title, //标题
  61. dataset, // 图表数据集
  62. true, // 是否显示图例
  63. false, // 是否生成工具(提示)
  64. false // 是否生成URL链接
  65. );
  66.  
  67. // 创建图表的窗体
  68. ChartFrame frame = new ChartFrame(title, chart, true);
  69. // 窗体的大小设置为自适应
  70. frame.pack();
  71. // 设置为可见
  72. frame.setVisible(true);
  73. }
  74. }

第五个:时序图,效果图如下

代码如下:

  1. package cn.xfz.image;
  2.  
  3. import java.awt.Font;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6.  
  7. import org.jfree.chart.ChartFactory;
  8. import org.jfree.chart.ChartFrame;
  9. import org.jfree.chart.JFreeChart;
  10. import org.jfree.chart.StandardChartTheme;
  11.  
  12. import org.jfree.data.time.Day;
  13. import org.jfree.data.time.TimeSeries;
  14. import org.jfree.data.time.TimeSeriesCollection;
  15.  
  16. public class CreateTimeSeriesChart {
  17. public static void makeTimeSeriesChart() {
  18. // 实例化TimeSeries对象
  19. TimeSeries timeseries = new TimeSeries("Data");
  20.  
  21. // 实例化Day
  22. Day day = new Day(1,1,2009);
  23. double d = 3000D;
  24. // 添加一年365天的数据
  25. for(int i = 0 ; i < 365 ; i++){
  26. // 创建随机数据
  27. d = d+(Math.random() - 0.5) * 10;
  28.  
  29. // 向数据集合中添加数据
  30. timeseries.add(day,d);
  31.  
  32. day = (Day)day.next();//下一天
  33. }
  34.  
  35. // 创建TimeSeriesCollection集合对象(数据集)
  36. TimeSeriesCollection dataset = new TimeSeriesCollection(timeseries);
  37.  
  38. // 处理中文乱码
  39. StandardChartTheme chartTheme = new StandardChartTheme("CN");
  40. // 标题
  41. chartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 20));
  42. // legend
  43. chartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 18));
  44. // 轴向字体
  45. chartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
  46. ChartFactory.setChartTheme(chartTheme);
  47.  
  48. // 生成时序图
  49. JFreeChart chart = ChartFactory.createTimeSeriesChart("上证指数时序图",//标题
  50. "日期", //时间轴标签
  51. "指数", //数据轴标签
  52. dataset,//数据集合
  53. true, //是否显示图例标识
  54. true, //是否显示tooltips
  55. false); //是否支持超链接
  56.  
  57. ChartFrame cf = new ChartFrame("时序图", chart);
  58. cf.pack();
  59. cf.setVisible(true);
  60. }
  61. public static void main(String[] args) {
  62. // 时序图
  63. makeTimeSeriesChart();
  64. }
  65.  
  66. }

今天就到这了,也没有太多的废话,不懂得朋友直接@我微信:qh2827

一秒钟教会你如何 使用jfreechart制作图表,扇形图,柱形图,线型图,时序图,附上详细代码,直接看效果的更多相关文章

  1. 使用Astah制作UML时序图

    Astah制作UML图--详解 时序图的制作 开篇语: 本文为光荣之路原创文章,欢迎转载,但请注明出处. 做测试的难免看到开发画出各种设计图,都很羡慕,比如: 帅么,漂亮么,其实我们测试人员也可以轻松 ...

  2. 使用Open Flash Chart(OFC)制作图表(Struts2处理)

    Java开源项目中制作图表比较出色的就是JFreeChart了,相信大家都听说过,它不仅可以做出非常漂亮的柱状图,饼状图,折线图基本图形之外,还能制作甘特图,仪表盘等图表.在Web应用中可以为项目增色 ...

  3. CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板。

    CLIP PATH (MASK) GENERATOR是一款在线制作生成clip-path路径的工具,可以直接生成SVG代码以及配合Mask制作蒙板. CLIP PATH (MASK) GENERATO ...

  4. JFreeChart 图表生成实例(饼图、柱状图、折线图、时序图)

    import java.awt.BasicStroke; import java.awt.Color; import java.io.FileOutputStream; import java.io. ...

  5. Spark之路 --- Scala用JFreeChart画图表实例

    JFreeChart介绍 JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用 ...

  6. 使用chart和echarts制作图表

      前  言 chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库.它可以帮你用不同的方式让你的数据变得可视化.每种类型的图表都有动画效果,并且看上去非常棒,即便是在retina ...

  7. 使用jfreechart生成柱状图、折线图、和饼状图

    JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.下面我就详细介绍如 ...

  8. Excel中用REPT函数制作图表

    本文从以下七个方面,阐述在Excel中用REPT函数制作图表: 一. 图形效果展示 二. REPT语法解释 三. REPT制作条形图 四. REPT制作漏斗图 五. REPT制作蝴蝶图 六. REPT ...

  9. Java学习---JFreeChart动态图表

    JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表.在Java的图形报表技术中,JFreeChart组件提供了方便.快捷.灵活的制图方法.作为一个功能强大的图形报表组件,JFre ...

随机推荐

  1. Kibana Query Language(KQL)

    语法: 官方文档 If you’re familiar with Kibana’s old lucene query syntax, you should feel right at home wit ...

  2. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_24-页面预览-页面预览测试

    通过nginx转发到预览的地址 重启nginx 添加页面预览按钮 调整下列表的列的宽度

  3. pycharm中指定ip和端口

    pycharm中指定ip和端口 环境: 系统:win7 本机ip:192.168.0.100 1.建立工程请参照:https://www.cnblogs.com/effortsing/p/103945 ...

  4. 如何为ubuntu等Linux系统扩容(LVM)

    第一步:磁盘分区 fdisk /dev/sdb root@ubuntu:/home/ubuntu# fdisk /dev/sdb Welcome to fdisk (util-linux 2.27.1 ...

  5. python基础----pymysql模块

    安装pymysql   ----pip install mysql 步骤: 1.建立连接   指定ip.端口号.密码.账号.数据库 2.建立游标 3.执行sql语句 4.获取结果或提交 5.关闭游标, ...

  6. manjaro 给笔记本安装18.1系统时发现中文变成了方块字

    解决方案: 1.连接网络,wifi/本地连接 2.打开终端 3.同步数据 如果是第一次,我们需要先同步本地数据包,先输入 sudo pacman -Syy 4.安装字体 sudo pacman -S ...

  7. ORK

    小试OKR一季度之后有感分享,你要不要试试ORK?   封面 OKR已经在国内热火朝天有一阵子了,为了适当的赶时髦,从年初开始团队内部小范围使用ORK模式以便测试团队会有什么化学反应.这篇文章打算写写 ...

  8. Ajax的使用及后台如何传参

    Ajax的使用(此处为表单序列化方式) $.ajax({ type: 'post', data: $('#newPriorityForm').serialize(), dataType: 'json' ...

  9. 剑指offer21:第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。(注意:这两个序列的长度是相等的)

    1 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是 ...

  10. Go语言学习之数据类型

    ### Go语言学习之数据类型 数据类型的转换 1.Go语言不允许隐式类型转换(显示转换才可以) 2.别名和原有类型也不能进行隐式类型转换 例子: func TestImplicit(t *testi ...