1. 完整代码在码云地址: https://gitee.com/Min-Duck/line_chart.git

  2. 多线折线图

  3. 单线折线图

  4. 饼图

  5. 工具类

import com.gideon.entity.ChartPosition;
import com.gideon.entity.LineChart;
import com.gideon.entity.PieChart;
import org.apache.poi.xddf.usermodel.chart.*;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTDLbls;
import org.openxmlformats.schemas.drawingml.x2006.chart.STDLblPos;import java.util.Arrays;
import java.util.List;/*** @author GideonYeung* @date 2020/12/3 17:13*/
public class ChartUtils {private static XSSFChart createDrawingPatriarch(XSSFSheet sheet, ChartPosition chartPosition, String chartTitle) {//创建一个画布XSSFDrawing drawing = sheet.createDrawingPatriarch();//前偏移量四个默认0XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, chartPosition.getCol1(), chartPosition.getRow1(), chartPosition.getCol2(), chartPosition.getRow2());//创建一个chart对象XSSFChart chart = drawing.createChart(anchor);//标题chart.setTitleText(chartTitle);//标题是否覆盖图表chart.setTitleOverlay(false);return chart;}/*** 创建饼图** @param sheet 图表* @see com.gideon.entity.PieChart  饼图数据的封装* @see com.gideon.entity.ChartPosition 饼图的坐标位置*/public static void createPie(XSSFSheet sheet, ChartPosition chartPosition, PieChart pieChart) {String titleName = pieChart.getTitleName();List<String> titleList = pieChart.getTitleList();List<Integer> dataList = pieChart.getDataList();XSSFChart chart = createDrawingPatriarch(sheet, chartPosition, titleName);//图例位置XDDFChartLegend legend = chart.getOrAddLegend();legend.setPosition(LegendPosition.LEFT);//CellRangeAddress(起始行号,终止行号, 起始列号,终止列号)//分类轴标数据,XDDFDataSource<String> countries = XDDFDataSourcesFactory.fromArray(titleList.toArray(new String[]{}));XDDFNumericalDataSource<Integer> values = XDDFDataSourcesFactory.fromArray(dataList.toArray(new Integer[]{}));XDDFChartData data = chart.createData(ChartTypes.PIE, null, null);//设置为可变颜色data.setVaryColors(true);//图表加载数据data.addSeries(countries, values);//绘制chart.plot(data);CTDLbls ctdLbls = chart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).addNewDLbls();ctdLbls.addNewShowVal().setVal(false);ctdLbls.addNewShowLegendKey().setVal(false);//类别名称ctdLbls.addNewShowCatName().setVal(true);//百分比ctdLbls.addNewShowSerName().setVal(false);ctdLbls.addNewShowPercent().setVal(true);//引导线ctdLbls.addNewShowLeaderLines().setVal(true);//分隔符为分行符ctdLbls.setSeparator("\n");//数据标签内ctdLbls.addNewDLblPos().setVal(STDLblPos.Enum.forString("inEnd"));}/*** 创建折线图** @param sheet 图表* @see com.gideon.entity.PieChart  饼图数据的封装* @see com.gideon.entity.ChartPosition 饼图的坐标位置*/public static void createLine(XSSFSheet sheet, ChartPosition chartPosition, LineChart lineChart) {List<Object> xAxisList = lineChart.getXAxisList();List<String> chartTitleList = lineChart.getTitleList();List<List<Integer>> chartDataList = lineChart.getDataList();String chartTitle = lineChart.getChartTitle();XSSFChart chart = createDrawingPatriarch(sheet, chartPosition, chartTitle);//图例位置XDDFChartLegend legend = chart.getOrAddLegend();legend.setPosition(LegendPosition.TOP);//分类轴标(X轴),标题位置XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);//值(Y轴)轴,标题位置XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);//LINE:折线图,XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);XDDFCategoryDataSource countries = XDDFDataSourcesFactory.fromArray(Arrays.copyOf(xAxisList.toArray(), xAxisList.toArray().length, String[].class));for (int i = 0; i < chartDataList.size(); i++) {List<Integer> floats = chartDataList.get(i);XDDFNumericalDataSource<Integer> dataSource = XDDFDataSourcesFactory.fromArray(floats.toArray(new Integer[]{}));//图表加载数据,折线XDDFLineChartData.Series series = (XDDFLineChartData.Series) data.addSeries(countries, dataSource);series.setTitle(chartTitleList.get(i), null);//直线series.setSmooth(false);//设置标记大小series.setMarkerSize((short) 6);}//绘制chart.plot(data);if (chartDataList.size() == 1) {chart.getCTChart().getPlotArea().getLineChartArray(0).addNewVaryColors().setVal(false);}}/*** 根据列名获取列值(例如getColumnIndexByAddress("A"),返回1代表第一列),具体打开可以看到excel字母*/public static int getColumnIndexByAddress(String columnAddress) {int colNum = 0;for (int i = 0; i < columnAddress.length(); i++) {char ch = columnAddress.charAt(columnAddress.length() - 1 - i);colNum += (ch - 'A' + 1) * Math.pow(26, i);}return colNum - 1;}

java使用poi绘制折线图和饼图(用数据绘制和使用excel生成的表格数据)相关推荐

  1. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

  2. Python——定义一个类来进行北京污染物的可视化(pyecharts绘制折线图、饼图、北京地图)

    目录 作业基本要求 数据来源 其他要求 一.源代码 二.可视化展示 1.绘制随时间变化曲线图 2.绘制某一时点下污染物占比 3.绘制北京地图下的各个检测站污染情况 ​编辑 4.分析变量之间的相关性(污 ...

  3. python绘制折线图保存_Python系统学习 - 绘制简单折线图

    今天我们开始学习 "数据可视化"这一章,我们主要是使用matplotlib库,来实现将数据整理以图表等形式显示出来 数据可视化 1.mpl_squares.py: # coding ...

  4. itextpdf 添加折线图、饼图、柱状图

    itextpdf 添加折线图.饼图.柱状图 时隔三年,又要对PDF一顿改版了,此次改版加入了饼图.折线图.柱状图等图形可视化. 文章目录 itextpdf 添加折线图.饼图.柱状图 依赖包 效果图 步 ...

  5. 第一章 使用 matplotlib 绘制折线图

    系列文章目录 第一章 使用 matplotlib 绘制折线图 第二章 使用 matplotlib 绘制条形图 第三章 使用 matplotlib 绘制直方图 第四章 使用 matplotlib 绘制散 ...

  6. 使用matplotlib绘制折线图(绘制一天当中的气温变化)

    matplotlib绘制折线图 一.使用matplotlib绘制一天当中的气温变化 1.假设一天当中每隔两个小时(range(2,26,2))的气温分别是[15,13,14.5,17,20,25,26 ...

  7. Python绘制折线图、散点图

    Python绘图需要下载安装matplotlib模块,它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图.关于matplotlib模块的下载安装预配置将在后面具体介绍. (一)绘制折线 ...

  8. 微信小程序:wx-charts动态绘制折线图

    微信小程序:wx-charts动态绘制折线图 wx-charts是基于 Canvas的微信小程序主流图表工具,体积小易操作,支持多种图表的绘制,这里主要就动态绘制折线图做出详解,所谓动态,指的是表格的 ...

  9. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换 springboot项目

    本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314 在参考文章的基础上,增加了模板样例 模板样例地址 百度网盘 链接:h ...

最新文章

  1. Node.js Web 模块
  2. linux 命令行启动虚拟机
  3. 实战(多图):旧路由器刷panabit系统!一台路由器的新生……
  4. 网页最少要有一个html标签,PHP_网页开发人员必须知道的10个不常用HTML标签, 网页开发人员常常希望能 - phpStudy...
  5. 【bzoj】 1412: [ZJOI2009]狼和羊的故事
  6. 利用Group Conv在单个CNN中实现集成学习
  7. Android 系统(174)---Android代码分析lint检查篇
  8. 大型网站技术架构(三)架构核心要素
  9. 第一次加入博客那,鼓励一下自己先
  10. 数据库设计的三大范式[学习笔记]
  11. BZOJ - 2783 树
  12. 计算机毕业设计论文题目分享
  13. SQLMap常用命令介绍
  14. 软件著作权申请表怎么填
  15. python入门基础要点,入门决定没问题(初学者专属)
  16. 计算机经常断开网络,当笔记本电脑经常自动断开网络连接时如何解决问题
  17. Android手机设备唯一标识符
  18. 腾讯云服务器宝塔面板账号密码忘记
  19. 生死看淡,不服就GAN(九)----英伟达力作PGGAN实战,生成高清图片
  20. 解决mysql sum求和返回null问题或IFNULL应用

热门文章

  1. python编写抽奖小游戏
  2. 拳王虚拟项目公社:淘宝虚拟货源怎么找?在哪里找虚拟资源,虚拟产品如何找到?
  3. 一本讲 Android 流畅性的书,应该有什么内容?
  4. 大咖云集,中国软件名园建设工作座谈会干货分享
  5. Flying.Swords.of.Dragon.Gate.2011.720p.HDTV.x264-NGB龙门飞甲
  6. pink老师-简易ATM机案例
  7. Ubuntu安装HP1018
  8. 深度解读:中国5G商用,为何渐入歧途?
  9. linux命令学习(23 24)-su sudo
  10. C++隐藏任务栏和桌面