各个事业部需要在工作表中生成利润走势图,来分析利润走向。

但是一共有52个部门,也就是需要给52个Excel表格绘图,同样的绘图操作要重复52遍,如果一个个操作实在浪费时间。

还有绘制什么样式的图也需要琢磨一下。既然是分析利润的走势,那么选择折线图就可以更好地展示数据的变化趋势。

代码实现:

import os
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference# 设置目标文件夹路径
path = './各部门利润表汇总/'# 获取文件夹下的所有文件名
file_list = os.listdir(path)
# 遍历文件名列表,取得每一个文件名
for file_name in file_list:# 拼接文件路径file_path = path + file_nameprint('正在处理:' + file_name)# 读取工作簿wb = load_workbook(file_path)# 读取工作簿中的活跃工作表ws = wb.active# 实例化 LineChart 类,得到 LineChart 对象chart = LineChart()# 引用工作表的部分数据data = Reference(worksheet=ws, min_row=3, max_row=9, min_col=1, max_col=5)# 添加被引用的数据到 LineChart 对象chart.add_data(data, from_rows=True, titles_from_data=True)# 添加 LineChart 对象到工作表中,指定折线图的位置ws.add_chart(chart, "C12")# 引用工作表的表头数据cats = Reference(worksheet=ws, min_row=2, max_row=2, min_col=2, max_col=5)# 设置类别轴的标签chart.set_categories(cats)# 设置 x 轴的标题chart.x_axis.title = "季度"# 设置 y 轴的标题chart.y_axis.title = "利润"# 改变线条颜色chart.style = 48# 保存文件wb.save(file_path)
# 在终端提示表格绘图结束
print('恭喜你,工作表中的图绘制成功!')

运行效果:

功能拆解

在分析项目、功能拆解前,先认识一下Excel图的元素。

X、Y轴的标题:图的坐标轴分为X轴(水平轴)、Y轴(垂直轴),其标题说明了坐标轴的内容。如下图所示:

类别轴、值轴:坐标轴还可以分为类别轴和值轴。值轴用于描述数量,标签一般是数字;类别轴用于描述类别,标签一般为类别名,如下图的“第n季度”。

图例:说明图中数据系列的含义。在下图中,图例说明相应颜色折线的含义,比如:深褐色折线描述了项目A的利润变化。

简单了解Excel图的元素后,我们开始项目的分析和拆解。

先回顾一下如何使用Microsoft Excel为多个Excel文件绘制折线图。

首先,打开一个Excel文件,绘制利润走势折线图,过程分为两步:
一、折线图绘制
二、折线图信息及样式的优化

其中,折线图绘制包括三个步骤:确认图的类型引用表格的数据设置图在工作表的位置

折线图信息及样式的优化包括三个步骤:修改类别轴的标签添加X轴、Y轴的标题修改图的样式

最后,依次打开其他Excel文件,重复实现折线图绘制折线图信息及样式的优化

其实,利用Python绘制折线图时,也对应着这两步:折线图绘制折线图信息及样式的优化

由此,该项目可以拆解为四大功能块:循环打开Excel文件折线图绘制折线图信息及样式的优化保存Excel文件

项目的关键问题在于:LineChart对象Reference对象的学习,实现折线图绘制折线图信息及样式的优化

然后,结合已学的知识for循环os.listdir()完成循环打开Excel文件工作簿对象.save()完成保存Excel文件

最后,将四个功能块合并,就可以为52个事业部的Excel表格绘制折线图。

2. 折线图绘制

折线图绘制功能块包括三个步骤:确定图的类型引用表格中的数据设置图在工作表的位置

接下来,我会讲解各步骤相关的知识点。最后,利用所学知识实现折线图绘制功能块。

确定图的类型

LineChart类

openpyxl 可以绘制条形图、折线图等图。在openpyxl.chart模块中,每个类型的图都有对应的类。

通过chart = LineChart(),得到LineChart对象(LineChart的意思是:折线图),相当于确认图的类型为折线图。

同理,通过chart = BarChart()可以得到BarChart对象(BarChart的意思是:条形图)。

综上,LineChart对象BarChart对象都可以称为图表对象。

需要注意的是,在实例化LineChart类前,不要忘了从openpyxl.chart中导入LineChart

引用表格中的数据

这个步骤的实现,需要讲解较多的新知识:Reference类LineChart对象.add_data()

Reference 类

在Python中,通过实例化openpyxl.chart中的Reference类(Reference中文翻译为:引用),完成表格数据的引用。

例如:Reference(worksheet=ws, min_row=3, max_row=9, min_col=1, max_col=5)引用了工作表对象ws中第3行到第9行、第1列到第5列矩形区域的数据。

Reference 类中的各参数代表什么意思?

参数worksheet比较好理解,指明被引用数据所在的工作表对象。

参数min_rowmax_rowmin_colmax_col:指明被引用数据的区域。

其中,min_row指明数据区域的起始行,max_row、min_col、max_col指明终止行、起始列、终止列。如下图所示。
【温馨提示】区域包括起始行、终止行、起始列、终止列

通过实例化Reference类,引用“事业01部.xlsx”第 3 行的数据。

实现代码:

from openpyxl import load_workbook
from openpyxl.chart import Reference, LineChart
# 读取工作簿
wb = load_workbook('./事业01部.xlsx')
# 读取工作簿中的活跃工作表
ws = wb.active
# 实例化 LineChart 类
chart = LineChart()
# 实例化Reference类,创建Reference对象,赋值给变量data。引用第3行的数据。
data = Reference(worksheet=ws, min_row=3, max_row=3, min_col=1, max_col=6)

当取一行数据时,起始行和终止行是同一行。

LineChart对象.add_data()

通过实例化Reference类引用表格的数据后,还需要把被引用的数据添加到LineChart对象

这时, LineChart对象.add_data()方法派上用场了。

例如,Linechart对象.add_data(data, from_rows=True, titles_from_data=True),将被引用的数据data添加到LineChart对象中。

第一个参数是被引用的数据,它是Reference对象

参数from_rows,参数titles_from_data又是什么意思呢?

参数from_rows的值可以是TrueFalse,默认值是False。我们尝试给参数from_rows设置不同的值理解该参数的意义。

数from_rows小结:

一、from_rows(中文翻译为:来自行)。当from_rows设置为True时,引用区域的每行数据绘制一条折线。

二、当from_rows设置为False时,引用区域的每列数据绘制一条折线。

参数titles_from_data的值也只能是TrueFalse,默认值是False。当设置不同的值,折线图会是怎么样的呢?

所以,当titles_from_data = False时,只需要引用绘制折线的数据

titles_from_data = True时,则需要多引用表格的数据来命名图例。

如下图中,多引用了表格的A列:项目A、项目B、项目C来命名图例。

引用表格中的数据步骤涉及的知识已讲解完:

1)Reference类:Reference(worksheet, min_row, max_row, min_col, max_col)
2)add_data()方法:LineChart对象.add_data(Reference对象,from_rows, titles_from_data)

了解了如何去引用数据来绘制折线图后,还需要确定好折线图在表格中放置的位置。

添图至表格的合适位置

工作表对象.add_chart()

绘制完图后,需要使用方法工作表对象.add_chart()将图添加至工作表,并设置图的位置。

add_chart()的使用很简单:工作表对象.add_chart(图表对象,参数anchor)

第1个参数,指明被添加至工作表的图表对象,这里是LineChart对象。

第2个参数 anchor:设置图在工作表的位置。

例如,ws.add_chart(chart, "C12"),将绘制后的图表对象chart添加到工作表对象ws中,图的左上角位于单元格C12

至此,我们已经可以在工作表上引用数据绘制出一个折线图,并放置在工作表的固定位置了。也就实现了功能块2:折线图绘制

练习绘制折线图:

绘制项目A~项目G的利润变化,需要以项目名命名图例。

涉及到的知识点有:

实现代码:

from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference# 读取工作簿
wb = load_workbook('./事业01部.xlsx')
# 读取工作簿中的活跃工作表
ws = wb.active
# 实例化 LineChart 类,得到 LineChart 对象, 并赋值给变量chart
chart=LineChart()
# 实例化 Reference 类,引用工作表的部分数据。将Reference对象赋值给变量data
data=Reference(worksheet=ws,min_row=3,max_row=9,min_col=1,max_col=5)
# 添加被引用的数据到 LineChart 对象
chart.add_data(data,from_rows=True, titles_from_data=True)
# 添加 LineChart 对象到工作表中,折线图的左上角位于单元格 C12。
ws.add_chart(chart,'C12')# 保存文件
wb.save('./事业01部.xlsx')

运行效果:

用Python绘制折线图(上)相关推荐

  1. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  2. python画折线图代码-Python绘制折线图和散点图的详细方法介绍(代码示例)

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  3. python 绘制折线图-怎样用python绘制折线图

    今天教大家用python绘制一些线性图案,需要的朋友可以借鉴参考一下. 画最简单的直线图 代码如下:import numpy as np import matplotlib.pyplot as plt ...

  4. 【Python】用Python绘制折线图(插值法平滑曲线)

    目录 利用绘制图表:​​​​​​matplotlib官网 1. 小试牛刀--柱状图 1.1 matplotlib库默认英文字体 2. 折线图绘制 2.1 读取exal方法 2.1.1  数据处理常用库 ...

  5. python绘制折线图先对数据进行处理_python气象数据分析并绘制折线图-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 excel 2010巧妙处理 折 ...

  6. python绘制折线图保存_python如何画折线图

    python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...

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

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

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

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

  9. python 绘制折线图 显示纵坐标值_python怎样用matplotlib画折线图对比图

    在论文写作中经常会出现多个算法效果比较的折线对比图,本文就介绍一下,怎样通过python中的matplotlib库来画出折线对比图. 工具/原料 python matploblib 方法/步骤 1 M ...

最新文章

  1. 广泛的信号处理链如何让语音助理“正常工作”
  2. npj Digit. Med. | 基于人工智能的FDA批准的医疗器械和算法现状
  3. MySQL和java连连看_用 JAVA 开发游戏连连看(之一)动手前的准备
  4. 1.1.12 增加页眉横线
  5. 树莓派命令连接wifi_树莓派连接无线网wifi配置方法
  6. python如何使用session和cookie_Python爬虫番外篇之Cookie和Session-阿里云开发者社区
  7. 未备案域名临时跳过备案提示_做好了网页,有域名和服务器,还要怎么搭建网站?...
  8. linux下的git 编辑器,vim - 如何让Git使用我选择的编辑器进行提交?
  9. 挑选了适合测试边界的汉字及截图
  10. android下拉刷新listView剖析
  11. mysql开启url重写_开启URL伪静态的方法
  12. symbian的字体包
  13. 虚拟机用Linux安装软件
  14. Hadoop技术原理与应用
  15. php 解决Chrome Cookie 的 SameSite 属性导致无法写入cookie问题
  16. 为什么你的有道云笔记越来越不好用?三个细节解决你的烦恼
  17. Java 架构师是怎样练成的
  18. 数据分析之实战项目——电商用户行为分析【python】
  19. GYM 101350D. Magical Bamboos
  20. Docker复习07——Docker 网络

热门文章

  1. 通过 Amazon 获取图书的封面
  2. 干货|一文搞定 uiautomator2 自动化测试工具使用
  3. 通向Golang的捷径【13. 错误处理和测试】
  4. sublime text 3143 授权码
  5. 小程序真机预览图片不显示
  6. [Plant Simulation]使用TableFile和Method进行仓库仿真(Byref函数)
  7. K8S 图形化管理界面 Kuboard
  8. 迭代法求解递推方程,
  9. 最新Mac Pro详解
  10. Redis启动窗口一闪就关