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 数据可视化操作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集成方案 | Docusign + 甄零科技,赋能企业海外业务高效增长!

本文将详细介绍 Docusign 与甄零科技的集成步骤及其效果,并通过实际应用场景来展示 Docusign 的强大集成能力,以证明 Docusign 集成功能的高效性和实用性。 甄零科技是一家专注于数字化合同管理系统的 SaaS 解决方案提供商,致力于为企业打造“…

00-算法打卡-目录

1 数组 01-算法打卡-数组-二分查找-leetcode(704)-第一天-CSDN博客 02-算法打卡-数组-二分查找-leetcode(35)-第二天-CSDN博客 03-算法打卡-数组-二分查找-leetcode(34)-第三天_leetcode 34-CSDN博客 04-算法打卡-数组-二分查找-leetcode(69)-第四天-CSDN博客 05-算法打卡-数组…

剑指Offer(数据结构与算法面试题精讲)C++版——day21

剑指Offer(数据结构与算法面试题精讲)C版——day21 题目一:数据流的第k大数字题目二:出现频率最高的k个数字题目三:和最小的k个数对附录:源码gitee仓库 题目一:数据流的第k大数字 题目&#xff…

NCCL非阻塞non-blocking实现

NCCL (NVIDIA Collective Communications Library) 主要设计用于高性能的集体通信(如all-reduce、broadcast等),但其核心函数默认是阻塞式的(blocking),即函数返回时操作已完成。不过,你可以通过…

代码随想录算法训练营第60期第二十天打卡

大家好,今天我们继续进入二叉树的章节,二叉树章节应该已经过半了,大家再坚持一下,那么废话不多说,我们继续今天的内容。 第一题对应力扣编号为235的二叉搜索树的最近公共祖先 其实我们上次任务就接触过了二叉树的最近…

8.0 西门子PLC的S7通讯解析

PC与西门子PLC的S7通讯主要有如下几个步骤: 1. TCP的三次握手(由Socket对象自动完成) 2.发送访问请求:COTP 3. 交换通讯信息:setup Commnunication 一、发送访问请求:COTP 比如向PLC请求+以及PLC返回响应的一个实际例子如下: 发送PLC:----> 03 00 00 16 11 E0 …

Nacos-SpringBoot 配置无法自动刷新问题排查

背景 Nacos SpringBoot版本中,提供了NacosValue注解,支持控制台修改值时,自动刷新,但是今天遇见了无法自动刷新的问题。 环境 SpringBoot 2.2.x nacos-client:2.1.0 nacos-config-spring-boot-starter:0…

JAVA | 聚焦 OutOfMemoryError 异常

个人主页 文章专栏 在正文开始前,我想多说几句,也就是吐苦水吧…最近这段时间一直想写点东西,停下来反思思考一下。 心中万言,真正执笔时又不知先写些什么。通常这个时候,我都会随便写写,文风极像散文&…

基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究

摘要:在数字经济与实体经济深度融合的背景下,品牌竞争已从单一产品力竞争转向生态化、技术化的赛道力竞争。本文以开源AI大模型、AI智能名片及S2B2C商城小程序源码为核心技术载体,构建"技术赋能-场景贯通-生态协同"三维分析框架&am…

【vue3】购物车实战:从状态管理到用户体验的全流程实现

在电商项目中,购物车是核心功能之一,需要兼顾数据一致性、用户体验和逻辑复杂度。 本文结合 Vue3 Pinia 技术栈,详细讲解如何实现一个高效且易用的购物车系统,重点剖析 添加购物车 和 头部购物车预览 的核心逻辑与实现细节。 一…

卡洛诗西餐厅,以“中式西餐”为核心战略

在餐饮市场的激烈竞争中,“本土化”是许多国际餐饮品牌难以跨越的鸿沟——要么因水土不服黯然退场,要么因过度妥协失去特色。然而,卡洛诗以“中式西餐”为核心战略,将西餐与国内饮食文化深度融合,不仅破解了西餐本土化…

28-29【动手学深度学习】批量归一化 + ResNet

1. 批量归一化 1.1 原理 当神经网络比较深的时候会发现:数据在下面,损失函数在上面,这样会出现什么问题? 正向传递的时候,数据是从下往上一步一步往上传递反向传递的时候,数据是从上面往下传递&#xff0…

【Linux网络】Http服务优化 - 增加请求后缀、状态码描述、重定向、自动跳转及注册多功能服务

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…

AIGC(生成式AI)试用 32 -- AI做软件程序测试 3

总结之前的AI做程序测试过程,试图优化提问方式,整合完成的AI程序测试提问,探索更多可能的AI测试 AIGC(生成式AI)试用 30 -- AI做软件程序测试 1 AIGC(生成式AI)试用 31 -- AI做软件程序…

C语言实现迪杰斯特拉算法进行路径规划

使用C语言实现迪杰斯特拉算法进行路径规划 迪杰斯特拉算法是一种用于寻找加权图中最短路径的经典算法。它特别适合用于计算从一个起点到其他所有节点的最短路径,前提是图中的边权重为非负数。 一、迪杰斯特拉算法的基本原理 迪杰斯特拉算法的核心思想是“贪心法”…

引领印尼 Web3 变革:Mandala Chain 如何助力 1 亿用户迈向数字未来?

当前 Web3 的发展正处于关键转折点,行业亟需吸引新用户以推动 Web3 的真正大规模采用。然而,大规模采用面临着核心挑战:数据泄露风险、集中存储的安全漏洞、跨系统互操作性障碍,以及低效的服务访问等问题。如何才能真正突破这些瓶…

WebSocket是h5定义的,双向通信,节省资源,更好的及时通信

浏览器和服务器之间的通信更便利,比http的轮询等效率提高很多, WebSocket并不是权限的协议,而是利用http协议来建立连接 websocket必须由浏览器发起请求,协议是一个标准的http请求,格式如下 GET ws://example.com:3…

Kaamel白皮书:IoT设备安全隐私评估实践

1. IoT安全与隐私领域的现状与挑战 随着物联网技术的快速发展,IoT设备在全球范围内呈现爆发式增长。然而,IoT设备带来便捷的同时,也引发了严峻的安全与隐私问题。根据NSF(美国国家科学基金会)的研究表明,I…

php安装swoole扩展

PHP安装swoole扩展 Swoole官网 安装准备 安装前必须保证系统已经安装了下列软件 4.8 版本需要 PHP-7.2 或更高版本5.0 版本需要 PHP-8.0 或更高版本6.0 版本需要 PHP-8.1 或更高版本gcc-4.8 或更高版本makeautoconf 安装Swool扩展 安装官方文档安装后需要再php.ini中增加…

服务器传输数据存储数据建议 传输慢的原因

一、JSON存储的局限性 1. 性能瓶颈 全量读写:JSON文件通常需要整体加载到内存中才能操作,当数据量大时(如几百MB),I/O延迟和内存占用会显著增加。 无索引机制:查找数据需要遍历所有条目(时间复…