Python openpyxls 绘制图表实操

659 阅读2分钟

image.png

「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战

前言

python openpyxl 模块不仅支持对表格内容访问、编辑、单元格样式等,还支持对表格里面的数据进行图表展示。

常见图表有折线图、柱状图、饼图、散点图。

  • 折线图:反映数据在一定时期的变化趋势
  • 柱状图:称为条形图,是一种以长方形的长度为变量数据进行统计的图表
  • 饼图: 圆饼图,反应每种数据的占比情况
  • 散点图:反应数据分散情况
  • 其他图表:嵌套圆圈表,曲面图,雷达图

我们之前在Python openpyxl 操作Excel 中,绘制图表需要从openpyxl.chart 导入Reference外,还需要导入对应点图表库如LineChart-折线图,如下例代码所示

from openpyxl.chart import LineChart,Reference 

准备好了吗,本期,我们学习使用openpyxl对Excel表格数据进行绘制常用表格,Let's go~

1. 绘制图表思路

我们在准备绘制图表前,需要先来理清一下实现思路。

  1. 我们需要提前准备好绘制图表的数据

    • 行标题和列标题分别定好
    • 绘制图表的数据,填写完整
    • 编辑完成后,保存并重命名Excel名字
  2. 导入openpyxl库、openpyxl.chart库

  3. 使用load_workbook导入对应的Excel文件

wb = loade_workbook("表格.xlsx")
  1. 指定操作的工作表如Sheet2
sheet = wb["Sheet2"]
  1. 声明图表的类型如折线图-LineChart()
linechart = LineChart()
  1. 处理Excel表格数据

    • 获取图表展示的数据
    • 获取图表X轴标签🏷️
data = Reference(worksheet=None, min_col=None, min_row=None, max_col=None, max_row=None, range_string=None)
  1. 将数据添加到图表
linechart.add_data(data, titles_from_data=True)
  1. 将图表添加到工作表上
sheet.add_chart(linechart,"C20")
  1. 将工作薄进行保存
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")

image.png

  • 绘制折线图表

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")

image.png

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")

image.png

总结

本期,我们使用openpyxl绘制折线图和柱状图实操。

以上是本期内容,欢迎大佬们点赞评论,下期见~~~