「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」
前言
python openpyxl 模块不仅支持对表格内容访问、编辑、单元格样式等,还支持对表格里面的数据进行图表展示。
常见图表有折线图、柱状图、饼图、散点图。
- 折线图:反映数据在一定时期的变化趋势
- 柱状图:称为条形图,是一种以长方形的长度为变量数据进行统计的图表
- 饼图: 圆饼图,反应每种数据的占比情况
- 散点图:反应数据分散情况
- 其他图表:嵌套圆圈表,曲面图,雷达图
我们之前在Python openpyxl 操作Excel 中,绘制图表需要从openpyxl.chart 导入Reference外,还需要导入对应点图表库如LineChart-折线图,如下例代码所示
from openpyxl.chart import LineChart,Reference
准备好了吗,本期,我们学习使用openpyxl对Excel表格数据进行绘制常用表格,Let's go~
1. 绘制图表思路
我们在准备绘制图表前,需要先来理清一下实现思路。
-
我们需要提前准备好绘制图表的数据
- 行标题和列标题分别定好
- 绘制图表的数据,填写完整
- 编辑完成后,保存并重命名Excel名字
-
导入openpyxl库、openpyxl.chart库
-
使用load_workbook导入对应的Excel文件
wb = loade_workbook("表格.xlsx")
- 指定操作的工作表如Sheet2
sheet = wb["Sheet2"]
- 声明图表的类型如折线图-LineChart()
linechart = LineChart()
-
处理Excel表格数据
- 获取图表展示的数据
- 获取图表X轴标签🏷️
data = Reference(worksheet=None, min_col=None, min_row=None, max_col=None, max_row=None, range_string=None)
- 将数据添加到图表
linechart.add_data(data, titles_from_data=True)
- 将图表添加到工作表上
sheet.add_chart(linechart,"C20")
- 将工作薄进行保存
wb.save("表格.xlsx")
2. 绘制折线图
-
Excel 数据写入
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.create_sheet(index=0,title="Linechart")
rows = [
["任务","1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月"],
["手工测试","100","80","90","70","99","30","60","70","80","95","88","78"],
["自动测试","50,"90","66","45","79","80","89","52","73","95","88","69"]
]
for row in rows:
sheet.append(row)
wb.save("Linechart.xlsx")
-
绘制折线图表
import openpyxl
from openpyxl.chart import LineChart,Reference
wb = openpyxl.load_workbook("Linechart.xlsx")
sheet = wb["Linechart"]
Line = LineChart()
data = Reference(sheet,min_row=2,max_row=3,min_col=1,max_col=13)
Line_data = Reference(sheet,min_row=1,max_row=1,min_col=2,max_col=13)
Line.add_data(data,from_rows=True,titles_from_data=True)
Line.set_categories(Line_data)
sheet.add_chart(Line,"F20")
wb.save("Linechart.xlsx")
3 绘制柱状图
我们继续把上述的Excel里面的数据绘制成柱状图。
from openpyxl.chart import BarChart,Reference
wb = openpyxl.load_workbook("Linechart.xlsx")
sheet = wb["Linechart"]
bar = BarChart()
data = Reference(sheet,min_row=2,max_row=3,min_col=1,max_col=13)
bar_data = Reference(sheet,min_row=1,max_row=1,min_col=2,max_col=13)
bar.add_data(data,from_rows=True,titles_from_data=True)
bar.set_categories(bar_data)
sheet.add_chart(bar,"F6")
wb.save("Linechart.xlsx")
总结
本期,我们使用openpyxl绘制折线图和柱状图实操。
以上是本期内容,欢迎大佬们点赞评论,下期见~~~