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.pswp.cn/diannao/80732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80732.shtml
英文地址,請注明出處:http://en.pswp.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延遲和內存占用會顯著增加。 無索引機制:查找數據需要遍歷所有條目(時間復…