当前位置: 首页 > news >正文

Python 数据可视化进阶:精准插入图表到指定 Excel 工作表

Python 数据可视化进阶:精准插入图表到指定 Excel 工作表

在处理数据的过程中,我们常常需要将生成的图表精准地插入到已存在数据的 Excel 文件的指定工作表中。借助 Python 的强大库组合,这一操作得以高效实现。以下是经过优化和注释补充的代码,助你轻松完成这一任务。

from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import matplotlib.pyplot as plt
import pandas as pddef insert_sheet_to_chart_bar(filename, df, sheet_name):"""将柱状图插入到指定的 Excel 工作表中参数:filename -- Excel 文件路径df -- 包含图表数据的 pandas DataFrame 对象sheet_name -- 目标工作表名称"""# 提取数据:从 DataFrame 中获取列名和数据值categories = list(df.columns)  # 获取列名作为柱状图分类标签values = list(df.values.flatten().tolist())  # 将数据展平并转换为列表形式# 生成柱状图plt.figure(figsize=(8, 4))bars = plt.bar(categories, values, color=['#1f77b4', '#ff7f0e'])# 设置中文显示:指定字体以确保中文标题和标签显示正确plt.rcParams['font.sans-serif'] = ['SimHei']plt.title("会员数量对比")  # 设置图表标题plt.ylabel("数量")  # 设置纵轴标签# 添加数值标签:在每个柱子上方显示具体数值for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width() / 2., height,f'{int(height)}',ha='center', va='bottom')# 保存图表图片:将生成的图表保存为 PNG 格式chart_path = 'membership_chart.png'plt.savefig(chart_path, dpi=300, bbox_inches='tight')plt.close()# 读取 Excel 文件:加载已存在的 Excel 文件以便进行修改wb = load_workbook(filename)# 获取指定工作表:确保图表插入到正确的工作表中if sheet_name in wb.sheetnames:ws = wb[sheet_name]else:ws = wb.create_sheet(sheet_name)  # 如果工作表不存在,则创建# 插入图表图片:加载图表图片并调整大小,然后插入到指定位置img = Image(chart_path)img.width = 1000  # 设置图片宽度img.height = 550  # 设置图片高度ws.add_image(img, 'D2')  # 将图片插入到 D2 单元格位置# 保存修改后的 Excel 文件:确保所有更改被保存wb.save(filename)

代码应用实例

假设有一个名为 data.xlsx 的 Excel 文件,其中包含一个名为 Sheet1 的工作表,该工作表中有两列数据(例如:A 列是月份,B 列是销售额)。我们可以通过以下代码将柱状图插入到 Sheet1 中:

# 导入 pandas 库
import pandas as pd# 创建示例 DataFrame
data = {'月份': ['1月', '2月', '3月'], '销售额': [2500, 3200, 2800]}
df = pd.DataFrame(data)# 直接读取指定sheet下的数据# 指定要读取的工作表名称
sheet_name = 'Sheet1'
df = pd.read_excel('data.xlsx', sheet_name=sheet_name)
print(df)# 调用函数
insert_sheet_to_chart_bar('data.xlsx', df, 'Sheet1')

关键点总结

  • 精确指定工作表 :通过传递 sheet_name 参数,可以确保图表插入到正确的 Excel 工作表中。如果工作表不存在,代码会自动创建该工作表。
  • 图表生成与保存 :使用 matplotlib 库生成柱状图,并保存为图片文件。在生成图表时,可以根据实际需求设置图表的标题、坐标轴标签、颜色、数值标签等属性。
  • 图片插入与调整 :利用 openpyxl 库加载保存的图片,调整图片的宽度和高度,使其在 Excel 中显示时具有合适的大小,并将其插入到指定的单元格位置。
  • 灵活性与可扩展性 :此代码结构清晰,易于根据具体需求进行修改和扩展。例如,可以轻松调整图表类型、样式,或者更改图片的插入位置和大小等。

希望以上内容能够帮助大家更好地理解和应用 Python 进行 Excel 数据可视化操作!

相关文章:

  • 手撕——贪吃蛇小游戏(下)
  • 如何通过挖掘需求、SEO优化及流量变现成功出海?探索互联网产品的盈利之道
  • Java高频面试之并发编程-08
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)
  • 前端分页与瀑布流最佳实践笔记 - React Antd 版
  • ADC读取异常情况汇总
  • pcm数据不支持存储在json里面,需要先转base64
  • 机器学习——Seaborn练习题
  • 怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了
  • 月之暗面开源-音频理解、生成和对话生成模型:Kimi-Audio-7B-Instruct
  • 【Java面试笔记:进阶】23.请介绍类加载过程,什么是双亲委派模型?
  • 第二章、在Windows上部署Dify:从修仙小说到赛博飞升的硬核指南
  • AI在医疗领域的10大应用:从疾病预测到手术机器人
  • madvise MADV_FREE对文件页统计的影响及原理
  • Java求职面试:从Spring Boot到微服务架构的全面解析
  • NGINX upstream、stream、四/七层负载均衡以及案例示例
  • qt编译报错error: ‘VideoSrcCtrl‘ does not name a type
  • vue中将html2canvas转成的图片传递给后台java
  • idea软件配置移动到D盘
  • 20250427在ubuntu16.04.7系统上编译NanoPi NEO开发板的FriendlyCore系统解决问题mkimage not found
  • 国家发改委:是否进口美国饲料粮、油料不会影响我国粮食供应
  • 李公明|一周画记:哈佛打响第一枪
  • 加总理:目前没有针对加拿大人的“活跃威胁”
  • 新加坡选情渐热:播客、短视频各显神通,总理反对身份政治
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • 申花四连胜领跑中超联赛,下轮榜首大战对蓉城将是硬仗考验