以下是Python实现在Excel文件中写入图表的完整实例教程。
前置条件
在开始之前,需要确保已经安装好以下两个Python包:
- openpyxl:用于读取和写入Excel文件。
- matplotlib:用于绘制图表。
安装方法:在命令行中输入pip install openpyxl matplotlib
。
实现过程
- 导入必要的包
首先需要导入openpyxl和matplotlib的包:
import openpyxl
import matplotlib.pyplot as plt
- 创建Excel工作簿
选择好要写入图表的Excel文件(假设为example.xlsx
),使用openpyxl创建文件对象,打开该Excel文件并定位到指定的工作表:
wb = openpyxl.load_workbook('example.xlsx')
ws = wb['Sheet1']
在这里,我们选择打开example.xlsx
文件的Sheet1
工作表。
- 准备数据
在代码中手动指定一个数据源(不一定非得是手动输入,可以通过读取数据库或者CSV文件等方式获得数据),这里演示一个简单的例子:
data = {'A': 15, 'B': 35, 'C': 20, 'D': 30}
这个字典变量表示一个有四条数据的数据源,A、B、C、D是四个类别,15、35、20、30是它们各自所对应的数值(这里数值的单位并没有特指)。
- 绘制图表
使用matplotlib库中提供的函数来绘制图表,并保存到指定的文件中:
# 构建图表
plt.bar(list(data.keys()), list(data.values()))
# 保存图表到文件
plt.savefig('chart.png')
这个例子中使用matplotlib库的bar
函数创建了一个简单的柱状图,其中keys()
函数返回字典中所有键的列表,values()
函数返回字典中所有值的列表。最后将图表保存到当前目录下的chart.png
文件中。
- 将图表写入Excel
将绘制好的图表插入到Excel文件中,使用openpyxl库的add_picture()函数实现:
# 插入图片到指定的单元格
img = openpyxl.drawing.image.Image('chart.png')
ws.add_picture(img, 'E3')
这里将绘制好的图表插入到了Sheet1
工作表中的单元格E3
中。
- 保存并关闭Excel工作簿
完成图表数据的写入操作后,需要将Excel文件保存,同时关闭Excel工作簿:
wb.save('example.xlsx')
wb.close()
这个例子中保存了example.xlsx
文件,并关闭了该Excel工作簿。
示例说明
这里提供两个示例,第一个示例是使用实时获取的天气数据绘制24小时内的气温变化图表,并将图表插入到Excel中;第二个示例是使用手动输入的数据绘制每个工厂出现次数的柱状图,并将图表插入到Excel中。
示例一
import requests
import openpyxl
import matplotlib.pyplot as plt
from datetime import datetime
# 获取天气数据
response = requests.get('https://www.apiopen.top/weatherApi?city=武汉')
data = response.json()['data']['forecast']
# 构建气温变化数据List
temp_data = []
for i in range(24):
temp_data.append(int(data[i]['high'].replace('℃', '')))
# 创建Excel工作簿
wb = openpyxl.load_workbook('example.xlsx')
ws = wb['Sheet1']
# 构建图表
plt.plot(range(1, 25), temp_data)
plt.title('24小时气温变化')
plt.xlabel('时间(24小时制)')
plt.ylabel('温度(℃)')
plt.savefig('chart.png')
# 插入图片到指定的单元格
img = openpyxl.drawing.image.Image('chart.png')
ws.add_picture(img, 'E3')
# 保存并关闭Excel工作簿
wb.save('example.xlsx')
wb.close()
这个示例首先使用requests
库获取天气数据,然后提取数据中24小时内的高温数据,并绘制了一个折线图。最后将生成的图表插入到Excel文件中。
示例二
import openpyxl
import matplotlib.pyplot as plt
# 准备数据
data = {'A': 15, 'B': 35, 'C': 20, 'D': 30}
# 创建Excel工作簿
wb = openpyxl.load_workbook('example.xlsx')
ws = wb['Sheet1']
# 构建图表
plt.bar(list(data.keys()), list(data.values()))
plt.title('每个工厂出现次数')
plt.xlabel('工厂')
plt.ylabel('出现次数')
plt.savefig('chart.png')
# 插入图片到指定的单元格
img = openpyxl.drawing.image.Image('chart.png')
ws.add_picture(img, 'E3')
# 保存并关闭Excel工作簿
wb.save('example.xlsx')
wb.close()
这个示例手动创建了一个名为data的字典,其中四个键值对分别表示的是四个工厂(A、B、C、D)的出现次数。代码中使用plt.bar()绘制了一个简单的柱状图,然后将生成的图表插入到Excel文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现在Excel文件中写入图表 - Python技术站