工作中要实现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. gdb 查找动态库方法
  2. R语言rpartb包树回归模型构建:基于乳腺癌(breast cancer)数据集
  3. word插入公式快捷键_用WORD写论文时好用到哭的技巧-插入公式
  4. android模糊后面视频,在安卓手机上怎么制作中间是横视频上下是模糊效果的竖视频?手机视频短片制作...
  5. webpack loader的套路
  6. 文本相似度算法(余弦定理)
  7. java web 导出word_JavaWeb Project使用FreeMaker导出Word文件
  8. SpringBoot:Actuator 监控管理工程各项信息
  9. 大专学的pHp找什么工作,大专毕业能做什么工作 毕业都去干嘛了
  10. 【BZOJ3105】新Nim游戏,线性基+贪心
  11. Lua虚拟机中的数据结构与栈
  12. 最大似然估计MLE和最大后验概率MAP
  13. 脸大脖子短,适合什么发型?
  14. 电池、电机、螺旋桨搭配
  15. centos7下解压rar文件
  16. JavaScript编程精解(笔记1)
  17. (1)线性空间基本概念
  18. 项目管理的5大过程/ 9大知识领域/44个子过程
  19. Android开发动态的监听网络状态的变化
  20. 帮表弟的女友买了个5900的dell 1420

热门文章

  1. 计算机底层01-计算机发展史
  2. TDengine 单节点Cluster not ready( 群集未就绪) 异常问题分析及解决方案
  3. 2022年微信小程序真机调试全流程及10大常见问题处理
  4. ansys添加力矩_Ansys加力矩.doc
  5. codeforces 416C C. Booking System(贪心)
  6. 硬件学习笔记(一)AD入门+STM32C8T6最小开发板得制作
  7. 海康威视的视频如何显示在web页面上显示
  8. 十大算法--支持向量机
  9. 那些从来不用花呗的女孩
  10. c语言 寻找相同的数字,用c语言编写寻找既是完全平方数,又有两位数字相同的三位正整数,例如121,144等。...