工作中要实现Word文档导出功能,并且包含数据统计图,我当时就理解为带图片的Word文档导出功能,于是想到利用Itext操作Word文档使用Jfreechart创建数据统计图,然后将数据统计图添加到Word文档中。
在这里给大家分步骤讲解下,首先给大家从数据统计图讲解。我想大家都知道Jfreechart的强大功能这里不一一介绍,只讲具体实现。

1、JfreeChart之柱状图BarChart实现效果

2、代码实现

package com.lizj_cdoc.jfreechartUtil;

import java.awt.Color;
import java.awt.Font;
import java.text.DecimalFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class CreateJfreeBarChart {

// 设置柱状图上方的标题
private static String chartTitle = "环境污染指数分布图";// 设置Y轴的标注
private static String rangeAxisLabel = "污染指数";// 设置X轴的标注
private static String domainAxisLabel = "城市";// 设置数据集合
private static CategoryDataset Dataset = createDataset2();
// 设置柱状图的柱子顶部是否显示数据
private static boolean baseItemLabelsVisible = true;
// 设置生成图片的宽度
private static int width = 800;
// 设置生成图片的高高度
private static int height = 500;
/*** 设置保存的路径和图片名称*/
private static String saveImgUrlAndName = "D:/BarChart3h.png";/*** 创建柱状图* * @param categoryDataset*/
public static void iCreateBarChart() {// TODO Auto-generated method stubJFreeChart chart = ChartFactory.createBarChart(getChartTitle(),getDomainAxisLabel(), getRangeAxisLabel(), getDataset());iSetBarChart(chart);WriteChartAsImage.writeChartAsImage(chart, getSaveImgUrlAndName(), getWidth(),getHeight());
}/*** 设置柱状图的样式* * @param chart*/
public static void iSetBarChart(JFreeChart chart) {CategoryPlot categoryplot = chart.getCategoryPlot();// 图本身ValueAxis rangeAxis = categoryplot.getRangeAxis();CategoryAxis domainAxis = categoryplot.getDomainAxis();// 设置Y轴的提示文字样式rangeAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12));// 设置Y轴刻度线的长度rangeAxis.setTickMarkInsideLength(10f);// rangeAxis.setTickMarkOutsideLength(10f);// 设置X轴下的标签文字domainAxis.setLabelFont(new Font("微软雅黑", Font.PLAIN, 12));// 设置X轴上提示文字样式domainAxis.setTickLabelFont(new Font("微软雅黑", Font.PLAIN, 12));NumberAxis vn = (NumberAxis) categoryplot.getRangeAxis();// 设置Y轴的数字为百分比样式显示DecimalFormat df = new DecimalFormat("0.0%");vn.setNumberFormatOverride(df);// 使柱状图反过来显示// vn.setInverted(true);// vn.setVerticalTickLabels(true);// 自定义柱状图中柱子的样式BarRenderer brender = new BarRenderer();brender.setSeriesPaint(1, Color.decode("#C0504D")); // 给series1 Barbrender.setSeriesPaint(0, Color.decode("#E46C0A")); // 给series2 Barbrender.setSeriesPaint(2, Color.decode("#4F81BD")); // 给series3 Barbrender.setSeriesPaint(3, Color.decode("#00B050")); // 给series4 Barbrender.setSeriesPaint(4, Color.decode("#7030A0")); // 给series5 Barbrender.setSeriesPaint(5, Color.decode("#00BF00")); // 给series6 Bar// 设置柱状图的顶端显示数字brender.setIncludeBaseInRange(true);brender.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());brender.setBaseItemLabelsVisible(isBaseItemLabelsVisible());// 设置柱子为平面图不是立体的brender.setBarPainter(new StandardBarPainter());// 设置柱状图之间的距离0.1代表10%;brender.setItemMargin(0.1);// 设置柱子的阴影,false代表没有阴影brender.setShadowVisible(false);// 设置图的背景为白色categoryplot.setBackgroundPaint(Color.WHITE);// 设置背景虚线的颜色categoryplot.setRangeGridlinePaint(Color.decode("#B6A2DE"));// 去掉柱状图的背景边框,使边框不可见categoryplot.setOutlineVisible(false);// 设置标题的字体样式chart.getTitle().setFont(new Font("微软雅黑", Font.PLAIN, 24));// 设置图表下方图例上的字体样式chart.getLegend().setItemFont(new Font("微软雅黑", Font.PLAIN, 12));categoryplot.setRenderer(brender);
}/*** 数据集合* * @return*/
public static CategoryDataset createDataset2() {DefaultCategoryDataset result = new DefaultCategoryDataset();String series1 = "海南";String series2 = "青藏";String series3 = "青海";String series4 = "上海";String series5 = "北京";String series6 = "山西";String type1 = "城市状况";result.addValue(0.1, series1, type1);result.addValue(0.2, series2, type1);result.addValue(0.3, series3, type1);result.addValue(0.4, series4, type1);result.addValue(0.5, series5, type1);result.addValue(0.7, series6, type1);return result;}public static String getChartTitle() {return chartTitle;
}public static void setChartTitle(String chartTitle) {CreateJfreeBarChart.chartTitle = chartTitle;
}public static String getRangeAxisLabel() {return rangeAxisLabel;
}public static void setRangeAxisLabel(String rangeAxisLabel) {CreateJfreeBarChart.rangeAxisLabel = rangeAxisLabel;
}public static String getDomainAxisLabel() {return domainAxisLabel;
}public static void setDomainAxisLabel(String domainAxisLabel) {CreateJfreeBarChart.domainAxisLabel = domainAxisLabel;
}public static CategoryDataset getDataset() {return Dataset;
}public static void setDataset(CategoryDataset dataset) {Dataset = dataset;
}public static boolean isBaseItemLabelsVisible() {return baseItemLabelsVisible;
}public static void setBaseItemLabelsVisible(boolean baseItemLabelsVisible) {CreateJfreeBarChart.baseItemLabelsVisible = baseItemLabelsVisible;
}public static int getWidth() {return width;
}public static void setWidth(int width) {CreateJfreeBarChart.width = width;
}public static int getHeight() {return height;
}public static void setHeight(int height) {CreateJfreeBarChart.height = height;
}public static String getSaveImgUrlAndName() {return saveImgUrlAndName;
}public static void setSaveImgUrlAndName(String saveImgUrlAndName) {CreateJfreeBarChart.saveImgUrlAndName = saveImgUrlAndName;
}

}

3、注意点

设置柱子的颜色:我之前用setSeriesPaint个柱子设置颜色的时候一直没有生效,后来发现在添加数据集的时候给result.addValue(0.1, series1, type1);设置series分开设置就会生效;

设置柱子为平面效果:

brender.setBarPainter(new StandardBarPainter());
重绘柱子,然后设置去掉阴影
brender.setShadowVisible(false);
设置柱子顶端显示数据:

brender.setIncludeBaseInRange(true);
brender.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());

其他的效果还需要大家一块发现。接下来会介绍折线和柱状图复合图形。

(1)JfreeChart之柱状图相关推荐

  1. jfreechart 画柱状图

    JFreeChart是一组功能强大.灵活易用的 Java绘图 API,使用它可以生成多种通用性的报表,包括柱状图.饼图.曲线图等.它能够用在 Swing和 Web等中制作自定义的图表或报表,并且得到广 ...

  2. JFreeChart展示柱状图和折线图的组合

    笔者最近工作需要在Web前端展示统计图表(基于SSH架构),使用了JFreeChart和amchart两个控件,谈谈使用心得.         JFreeChart的最大好处是可以在Server端保存 ...

  3. Java Swing中JFreeChart构建柱状图(非3D)时关于取消柱体的高亮问题的解决纪要?

    背景 项目应用中后期的用例Demo,特此纪要! 问题 Java Swing中JFreeChart构建的柱状图(非3D)如何取消柱体的高亮显示? 说明 此Demo中点题的代码就一行,其余的代码段在其他的 ...

  4. 使用JFreeChart做成柱状图写入word的总结

    1.用到以下jar包 2.准备好含有图片的word文档,另存问xml文件,改为freemark模板文件(ftl),用编译器找到<w:binData标签,替换成相应的参数 使用·JFreeChar ...

  5. JFreeChart 制作柱状图并填充到excel上

    //scoreTaskEntity.getFinalGradeSummary()填充数据,y轴会自动根据填充的数据分数据段 DefaultCategoryDataset dataset = new D ...

  6. java web 柱状图_使用JFreeChart实现基于Web的柱状图

    JFreeChart是一组功能强大.灵活易用的 Java绘图 API,使用它可以生成多种通用性的报表,包括柱状图.饼图.曲线图等.它能够用在 Swing和 Web等中制作自定义的图表或报表,并且得到广 ...

  7. 使用JFreeChart实现基于Web的柱状图

    JFreeChart是一组功能强大.灵活易用的 Java绘图 API,使用它可以生成多种通用性的报表,包括柱状图.饼图.曲线图等.它能够用在 Swing和 Web等中制作自定义的图表或报表,并且得到广 ...

  8. java jfreechart 柱状图,JFreeChart -- 柱状图

    不知道 JFreeChart 项目组出于什么目的,他们提供的 sample code 里面的例子给人感觉就是乱,同样的结果可以用不同方式.使用不的方法.再加上网上流传的 JFreeChart 旧的使用 ...

  9. 用jfreechart画统计分析柱状图(转)

    我们介绍使用 JFreeChart 生成柱状图,首先从一个最简单的例子开始. 一 最简单的例子 为了降低门槛,让大家心理有个底,先介绍一个简单的不能再简单的例子,图片中的各类属性都采用默认值. < ...

最新文章

  1. Windows之vue-cli安装和vue项目快速搭建
  2. tshark删除pcap文件中与网关通信的数据包
  3. 免除抠图困扰,专供PNG图片素材网站你知道么?
  4. 安装net framework3.5提示需要.net framework3.5,错误代码0x800f081f
  5. 360图片搜索操作使用说明
  6. 区块链-公钥生成地址
  7. Kmeans算法实现
  8. 理论综述与创新---结构洞的新应用
  9. python学习的读书路线
  10. 密码学复习笔记2【分组密码/S-DES、DES】
  11. 5464: Star Arrangements
  12. 华为云mysql教程_华为云+NextCloud(私人云盘搭建)
  13. 解决投影仪放映PPT时左右、上下出现黑边问题
  14. 【软件工程】软件与软件危机
  15. 24小时切换简易时钟-51单片机
  16. 网络安全与渗透:kali系统,namp端口扫描(一)此生无悔入华夏,男儿何不带吴钩
  17. WPF基础(十八)C#正则表达式:匹配汉字、特殊字符、字母、数字、IP/端口号等等
  18. 说完了 xxl-job 的执行器原理,再来聊聊调度中心是如何调度任务的
  19. 关于云服务及网络的几个基础概念
  20. 使用Python制作一个照片换底色的exe程序文件(详细教程)

热门文章

  1. HDU 2565 放大的X【图形】
  2. TensorFlow2.0选择GPU或CPU训练
  3. python操作mysql_python操作MySQL
  4. 2019年研究生入学考试北京理工大学计算机专业基础813真题回忆
  5. Silicon EFR32BG22低功耗蓝牙开发入门篇
  6. 2020美亚杯个人赛
  7. ZigBee学习之7——OSAL(操作系统抽象层)API解读
  8. 用于采集数据的工具——StatsD
  9. layui弄一个好看的数据表格样式
  10. 大数据必学语言Scala(三十三):scala高级用法 模式匹配