OpenPyXL也提供了比较强大的图表绘制功能,可以绘制二维图和三维图。常见的图表类型如线形图、条形图、面积图、饼图等都是支持的。本节介绍用OpenPyXL绘制条形图和饼图的方法。[大谦Excel,dqexcel点com]
条形图
【问题描述】
用给定数据,使用OpenPyXL绘制二维条形图。
【示例12-3】
本例使用示例12-1的数据,试用该数据绘制二维复合条形图。
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
你是OpenPyXL专家,文件路径为:D:/Samples/ch12/商品销量.xlsx。用OpenPyXL打开该文件。B1:D1为列标签,A2:A6为行标签,用A1:D6范围内的数据生成条形图。保存文件。添加代码注释。
2. ChatGPT提示词模板说明
对比示例12-1的提示词模板,会发现本例的要简洁很多。注意,这里列标签数据和行标签数据要单独指定,并且绘图数据的范围是包含列标签和行标签的。
3. 代码
- 根据提示词得到类似下面的xlwings代码:
# 导入openpyxl模块中的Workbook、load_workbook和charts等模块
from openpyxl import Workbook, load_workbook
from openpyxl.chart import BarChart, Reference, Series
# 读取文件
wb = load_workbook("D:/Samples/ch12/商品销量.xlsx")
# 选择第一个工作表
ws = wb.worksheets[0]
# 获取B2:D6范围内的数据,保存为Referece对象
data = Reference(ws, min_col=2, min_row=2, max_col=4, max_row=6)
# 获取A2:A6范围内的数据,保存为Referece对象,用于作为条形图的横坐标
labels = Reference(ws, min_col=1, min_row=2, max_col=1, max_row=6)
# 创建条形图对象
chart = BarChart()
# 设置数据源
chart.add_data(data, titles_from_data=True)
# 设置x轴标签
chart.set_categories(labels)
# 位置设置
chart.title = "商品销量"
chart.x_axis.title = "商品名称"
chart.y_axis.title = "销量"
# 将条形图插入到指定单元格
ws.add_chart(chart, "E2")
# 保存文件
wb.save("D:/Samples/ch12/商品销量.xlsx")
4. 使用代码
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,生成复合条形图并添加到Excel工作表中,如图12-5所示。
图12-5 用OpenPyXL包绘制的复合条形图
【知识点扩展】
OpenPyXL中使用BarChart函数绘制条形图。该函数返回一个条形图对象,利用条形图对象的add_data方法绑定数据,利用set_categories方法设置标签。注意,绘图数据和标签数据需要先保存为Reference对象,然后作为add_data方法和set_categories方法的参数进行指定。
图表创建完毕后,用工作表对象的add_chart方法将图表添加到Excel工作表的指定位置。
饼图
【问题描述】
用给定数据,使用OpenPyXL绘制二维饼图。
【示例12-4】
本例使用示例12-2的数据,试用该数据绘制二维饼图。
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
你是OpenPyXL专家,文件路径为:D:/Samples/ch12/访客年龄.xlsx。用OpenPyXL打开该文件。B列为“占比”数据,A列为“访客年龄”,A2:A5为扇区标签,用A1:B5范围内的数据生成饼图。保存文件。添加代码注释。
2. ChatGPT提示词模板说明
需要单独指定扇区标签数据。
3. 代码
- 根据提示词得到类似下面的xlwings代码:
import openpyxl
from openpyxl.chart import PieChart, Reference, Series
# 打开Excel文件并选定指定工作表
wb = openpyxl.load_workbook('D:/Samples/ch12/访客年龄.xlsx')
ws = wb['Sheet1']
# 创建饼图并指定数据范围
pie = PieChart()
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
data = Reference(ws, min_col=2, min_row=1, max_row=5)
pie.add_data(data, titles_from_data=True)
# 添加扇区标签
pie.set_categories(labels)
# 将饼图插入到单元格E1中
ws.add_chart(pie, "E1")
# 保存Excel文件
wb.save("D:/Samples/ch12/访客年龄.xlsx")
4. 使用代码
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,生成饼图并添加到Excel工作表中,如图12-6所示。
图12-6 用OpenPyXL包生成饼图
【知识点扩展】
使用PieChart函数创建饼图,绘图数据和标签数据的保存和绑定及其他操作与条形图的类似。