數據可視化 —— 堆形圖應用(大全)

一、案例一:溫度堆積圖

# 導入 matplotlib 庫中的 pyplot 模塊,這個模塊提供了類似于 MATLAB 的繪圖接口,
# 方便我們創建各種類型的可視化圖表,比如折線圖、柱狀圖、散點圖等
import matplotlib.pyplot as plt
# 導入 numpy 庫,它是 Python 中用于科學計算的基礎庫,提供了強大的多維數組對象和各種數學函數,
# 能高效地處理數值數據,在后續的繪圖中可用于生成和處理坐標軸數據
import numpy as np# 創建一個新的圖形窗口,該函數的參數解釋如下:
# num='堆形圖':設置圖形窗口的標題為 '堆形圖',方便我們識別當前打開的圖形
# figsize=(12, 7):指定圖形的大小,單位為英寸,這里圖形的寬度為 12 英寸,高度為 7 英寸
# facecolor='w':設置圖形窗口的背景顏色為白色,'w' 是白色的縮寫
plt.figure(num='堆形圖', figsize=(12, 7), facecolor='w')# matplotlib 默認的字體可能無法正確顯示中文,所以我們通過修改 rcParams 參數來更改字體。
# 'font.sans-serif' 是用來指定無襯線字體的參數,這里將其設置為 'KaiTi'(楷體),
# 這樣在繪制圖形時,中文就能正常顯示了
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 設置圖形中文字的字體大小為 15,這樣可以讓圖形中的文字清晰易讀
plt.rcParams['font.size'] = 15
# 在默認情況下,matplotlib 可能無法正確顯示負號,將 'axes.unicode_minus' 參數設置為 False,
# 可以解決負號顯示的問題,確保負號能在圖形中正常顯示
plt.rcParams['axes.unicode_minus'] = False# 定義 x 軸的數據,使用 numpy 的 array 函數創建一個一維數組,數組元素為字符串類型,
# 代表 5 個月份,后續會作為柱狀圖的 x 軸刻度
x = np.array(['1', '2', '3', '4', '5'])
# 定義最高溫度的數據,同樣使用 numpy 的 array 函數創建一維數組,
# 數組元素為整數類型,代表每個月對應的最高溫度值
y1 = np.array([10, 8, 7, 11, 13])
# 定義最低溫度的數據,創建一維數組,數組元素為整數類型,
# 代表每個月對應的最低溫度值
y2 = np.array([9, 6, 5, 10, 12])# 定義誤差數據,是一個列表,列表中的元素代表每個月最低溫度數據的誤差范圍,
# 在繪制柱狀圖時,會使用這些誤差數據來繪制誤差線,以展示數據的不確定性
error = [2, 1, 2.5, 2, 1.5]# 定義柱狀圖的寬度,這里設置為 0.3,它會影響柱狀圖在 x 軸上的寬窄程度
bar_width = 0.3# 設置圖形的標題,標題內容為 '5 個月的溫度堆積柱形圖',讓讀者一眼就能知道這個圖形所展示的內容
plt.title('5個月的溫度堆積柱形圖')
# 設置 x 軸的標簽,標簽內容為 '月份',明確 x 軸數據所代表的含義
plt.xlabel('月份')
# 設置 y 軸的標簽,標簽內容為 '溫度',明確 y 軸數據所代表的含義
plt.ylabel('溫度')# 使用 for 循環遍歷 x 和 y1 數據,zip 函數將 x 和 y1 中對應的元素一一配對,
# 每次循環取出一個月份和對應的最高溫度值
for a, b in zip(x, y1):# 在每個最高溫度柱狀圖的上方添加文本標簽,用于顯示具體的溫度值。# plt.text 函數的參數解釋如下:# a:文本標簽的 x 坐標位置,即對應的月份# b + 1:文本標簽的 y 坐標位置,在最高溫度值的基礎上向上偏移 1 個單位,使標簽不與柱狀圖重疊# '%d' % b:將最高溫度值格式化為整數形式的字符串,作為文本標簽的內容# ha='center':設置文本的水平對齊方式為居中對齊,使標簽在柱狀圖上方居中顯示# va='center':設置文本的垂直對齊方式為居中對齊plt.text(a, b + 1, '%d' % b, ha='center', va='center')
# 繪制最高溫度的柱狀圖,plt.bar 函數的參數解釋如下:
# x:柱狀圖的 x 軸位置,即月份
# y1:柱狀圖的高度,即最高溫度值
# width=bar_width:柱狀圖的寬度,使用之前定義的 bar_width 值
plt.bar(x, y1, width=bar_width)# 同樣使用 for 循環遍歷 x 和 y2 數據,將每個月份和對應的最低溫度值配對
for a, b in zip(x, y2):# 在每個最低溫度柱狀圖的上方添加文本標簽,顯示具體的溫度值。# b - 1:文本標簽的 y 坐標位置,在最低溫度值的基礎上向下偏移 1 個單位# va='baseline':設置文本的垂直對齊方式為基線對齊plt.text(a, b - 1, '%d' % b, ha='center', va='baseline')
# 繪制最低溫度的柱狀圖,使其堆積在最高溫度柱狀圖的上方。
# plt.bar 函數的參數解釋如下:
# x:柱狀圖的 x 軸位置,即月份
# y2:柱狀圖的高度,即最低溫度值
# bottom=y1:指定柱狀圖的底部位置,將最低溫度柱狀圖堆積在最高溫度柱狀圖上方
# width=bar_width:柱狀圖的寬度
# yerr = error:為柱狀圖添加誤差線,誤差范圍由 error 列表指定
plt.bar(x, y2, bottom=y1, width=bar_width, yerr=error)# 為圖形添加圖例,圖例用于說明圖形中不同元素所代表的含義。
# 傳入一個列表 ['最高溫度', '最低溫度'],分別對應之前繪制的最高溫度和最低溫度柱狀圖。
# shadow=True:為圖例添加陰影效果,使其更具立體感
# fancybox=True:將圖例的邊框設置為圓角樣式,讓圖例外觀更美觀
plt.legend(['最高溫度', '最低溫度'], shadow=True, fancybox=True)
# 顯示繪制好的圖形,調用該函數后,圖形窗口會彈出顯示繪制的溫度堆積柱狀圖
plt.show()

?二、案例二:公司各部支出


import matplotlib.pyplot as plt
import pandas as pdplt.figure(num='圖', figsize=(12, 6), facecolor='w')plt.rcParams['font.sans-serif'] = 'KaiTi'df = pd.read_excel('某公司各部門1—2月份實際支出.xlsx')# 從 DataFrame 中提取 '部門' 列的數據,作為柱狀圖的 x 軸標簽
x = df['部門']# 定義誤差棒的高度,這是一個列表,列表中的每個元素對應每個部門的誤差值,后續繪制柱狀圖時會用到這些誤差值來繪制誤差棒
error = [1000, 200, 150, 100, 100, 500, 1000, 880]# 定義柱狀圖的寬度,該值會影響柱狀圖在 x 軸上的寬窄程度
bar_width = 0.4plt.title('某公司各部門1—2月份實際支出簇狀柱形圖', fontsize=20, fontproperties='SimHei')plt.ylabel('實際支出(元)', fontsize=15)# 使用 for 循環遍歷 x 軸標簽、1 月數據和 2 月數據,zip 函數將這三個序列中的對應元素一一配對
for a, b, c in zip(x, df['1月'], df['2月']):# 在每個 1 月支出柱狀圖的中間位置添加文本標簽,顯示具體的支出值# a:文本標簽的 x 坐標位置,即部門名稱對應的位置# b / 2:文本標簽的 y 坐標位置,在 1 月支出值的一半高度處# '%d' % b:將 1 月支出值格式化為整數形式的字符串,作為文本標簽的內容# ha='center':設置文本的水平對齊方式為居中對齊# va='center':設置文本的垂直對齊方式為居中對齊plt.text(a, b / 2, '%d' % b, ha='center', va='center')# 在每個 2 月支出柱狀圖的中間位置添加文本標簽,顯示具體的支出值# b + c / 2:文本標簽的 y 坐標位置,在 1 月和 2 月支出總和的一半高度處plt.text(a, b + c / 2, '%d' % c, ha='center', va='center')# 繪制 1 月支出的柱狀圖
# x:柱狀圖的 x 軸位置,即部門名稱
# df['1月']:柱狀圖的高度,即 1 月各部門的實際支出值
# width=bar_width:柱狀圖的寬度
# color='g':設置柱狀圖的顏色為綠色
plt.bar(x, df['1月'], width=bar_width, color='g')# 繪制 2 月支出的柱狀圖,使其堆積在 1 月支出柱狀圖的上方
# x:柱狀圖的 x 軸位置,即部門名稱
# df['2月']:柱狀圖的高度,即 2 月各部門的實際支出值
# bottom=df['1月']:指定柱狀圖的底部位置,將 2 月支出柱狀圖堆積在 1 月支出柱狀圖上方
# yerr=error:為柱狀圖添加誤差棒,誤差范圍由 error 列表指定
# width=bar_width:柱狀圖的寬度
# color='salmon':設置柱狀圖的顏色為鮭魚色
plt.bar(x, df['2月'], bottom=df['1月'],  yerr=error, width=bar_width, color='salmon')# 為圖形添加圖例,說明不同顏色的柱狀圖所代表的含義
# ['1月', '2月']:傳入一個列表,分別對應 1 月和 2 月支出的柱狀圖
plt.legend(['1月', '2月'])# 將繪制好的圖形保存為圖片文件,文件名為 '某公司堆圖.png'
plt.savefig('某公司堆圖.png')# 顯示繪制好的圖形,調用該函數后,圖形窗口會彈出顯示繪制的柱狀圖
plt.show()

三、案例三:不同產品銷售額

?


import matplotlib.pyplot as plt
import pandas as pdplt.figure(num='圖', figsize=(12, 8), facecolor='w')# 設置 matplotlib 使用的字體為楷體,以確保圖形中的中文能正常顯示,因為默認字體可能無法正確顯示中文
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 解決負號顯示問題,默認情況下 matplotlib 可能無法正確顯示負號,將該參數設置為 False 可解決此問題
plt.rcParams['axes.unicode_minus'] = Falsedf = pd.read_excel('不同產品各季度的銷售額.xlsx')
# 從 DataFrame 中提取 '季度' 列的數據,作為柱狀圖的 x 軸標簽
x = df['季度']
# 從 DataFrame 中提取 '產品A' 列的數據,作為產品 A 的銷售額數據
y1 = df['產品A']
# 從 DataFrame 中提取 '產品B' 列的數據,作為產品 B 的銷售額數據
y2 = df['產品B']
# 從 DataFrame 中提取 '產品C' 列的數據,作為產品 C 的銷售額數據
y3 = df['產品C']plt.title('不同產品各季度的銷售額', fontsize=20)plt.ylabel('銷售額(元)', fontsize=14)plt.ylim(0, 12000)# 定義柱狀圖的寬度,該值會影響柱狀圖在 x 軸上的寬窄程度
bar_width = 0.3plt.bar(x, y3, width=bar_width)
plt.bar(x, y2, bottom=y3, width=bar_width)
plt.bar(x, y1, bottom=y2, width=bar_width)# 使用 for 循環遍歷 x 軸標簽、產品 C、產品 B 和產品 A 的銷售額數據,zip 函數將這四個序列中的對應元素一一配對
for a, b, c, d in zip(x, y3, y2, y1):# 在產品 C 銷售額柱狀圖的中間位置添加文本標簽,顯示具體的銷售額值# a:文本標簽的 x 坐標位置,即季度對應的位置# b / 2:文本標簽的 y 坐標位置,在產品 C 銷售額值的一半高度處# '%d' % b:將產品 C 銷售額值格式化為整數形式的字符串,作為文本標簽的內容# ha='center':設置文本的水平對齊方式為居中對齊plt.text(a, b / 2, '%d' % b, ha='center')# 在產品 B 銷售額柱狀圖的中間位置添加文本標簽,顯示具體的銷售額值# b + c / 2:文本標簽的 y 坐標位置,在產品 C 和產品 B 銷售額總和的一半高度處plt.text(a, b + c / 2, '%d' % c, ha='center')# 在產品 A 銷售額柱狀圖的中間位置添加文本標簽,顯示具體的銷售額值# b + c + d / 2:文本標簽的 y 坐標位置,在產品 C、產品 B 和產品 A 銷售額總和的一半高度處plt.text(a, b + c + d / 2, '%d' % d, ha='center')plt.legend(['產品A', '產品B', '產品C'], shadow=True, fancybox=True)plt.show()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77605.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python工程中的包管理(requirements.txt)

pip install -r requirements.txtpython工程通過requirements.txt來管理依賴庫版本,上述命令,可以一把安裝依賴庫,類似java中maven的pom.xml文件。 參考 [](

操作系統 3.4-段頁結合的實際內存管理

段與頁結合的初步思路 虛擬內存的引入: 為了結合段和頁的優勢,操作系統引入了虛擬內存的概念。虛擬內存是一段地址空間,它映射到物理內存上,但對用戶程序是透明的。 段到虛擬內存的映射: 用戶程序中的段首先映射到虛…

【Amazon EC2】為何基于瀏覽器的EC2 Instance Connect 客戶端連接不上EC2實例

文章目錄 前言📖一、報錯先知?二、問題復現😯三、解決辦法🎲四、驗證結果👍五、參考鏈接🔗 前言📖 這篇文章將講述我在 Amazon EC2 上使用 RHEL9 AMI 時無法連接到 EC2 實例時所遇到的麻煩😖 …

Python學習筆記(二)(字符串)

文章目錄 編寫簡單的程序一、標識符 (Identifiers)及關鍵字命名規則:命名慣例:關鍵字 二、變量與賦值 (Variables & Assignment)變量定義:多重賦值:變量交換:(很方便喲) 三、輸入與輸出 (In…

Hydra Columnar:一個開源的PostgreSQL列式存儲引擎

Hydra Columnar 是一個 PostgreSQL 列式存儲插件,專為分析型(OLAP)工作負載設計,旨在提升大規模分析查詢和批量更新的效率。 Hydra Columnar 以擴展插件的方式提供,主要特點包括: 采用列式存儲&#xff0c…

es的告警信息

Elasticsearch(ES)是一個開源的分布式搜索和分析引擎,在運行過程中可能會產生多種告警信息,以提示用戶系統中存在的潛在問題或異常情況。以下是一些常見的 ES 告警信息及其含義和處理方法: 集群健康狀態告警 信息示例…

健康與好身體筆記

文章目錄 保證睡眠飯后百步走,活到九十九補充鈣質一副好腸胃肚子咕咕叫 健康和工作的取舍 以前對健康沒概念,但是隨著年齡增長,健康問題凸顯出來。 持續維護該文檔,健康是個永恒的話題。 保證睡眠 一是心態要好,沾枕…

vue實現在線進制轉換

vue實現在線進制轉換 主要功能包括: 1.支持2-36進制之間的轉換。 2.支持整數和浮點數的轉換。 3.輸入驗證(雖然可能存在不嚴格的情況)。 4.錯誤提示。 5.結果展示,包括大寫字母。 6.用戶友好的界面,包括下拉菜單、輸…

智體知識庫:poplang編程語言是什么?

問:poplang語言是什么 Poplang 語言簡介 Poplang(OPCode-Oriented Programming Language)是一種面向操作碼(Opcode)的輕量級編程語言,主要用于智體(Agent)系統中的自動化任務處理、…

二分查找5:852. 山脈數組的峰頂索引

鏈接:852. 山脈數組的峰頂索引 - 力扣(LeetCode) 題解: 事實證明,二分查找不局限于有序數組,非有序的數組也同樣適用 二分查找主要思想在于二段性,即將數組分為兩段。本體就可以將數組分為ar…

下列軟件包有未滿足的依賴關系: python3-catkin-pkg : 沖突: catkin 但是 0.8.10-

下列軟件包有未滿足的依賴關系: python3-catkin-pkg : 沖突: catkin 但是 0.8.10- 解決: 1. 確認當前的包狀態 首先,運行以下命令來查看當前安裝的catkin和python3-catkin-pkg版本,以及它們之間的依賴關系: dpkg -l | grep ca…

深度學習:AI 大模型時代的智能引擎

當 Deepspeek 以逼真到難辨真假的語音合成和視頻生成技術橫空出世,瞬間引發了全球對 AI 倫理與技術邊界的激烈討論。從偽造名人演講、制造虛假新聞,到影視行業的特效革新,這項技術以驚人的速度滲透進大眾視野。但在 Deepspeek 強大功能的背后…

醫學分割新標桿!雙路徑PGM-UNet:CNN+Mamba實現病灶毫厘級捕捉

一、引言:醫學圖像分割的挑戰與機遇 醫學圖像分割是輔助疾病診斷和治療規劃的關鍵技術,但傳統方法常受限于復雜病理特征和微小結構。現有深度學習模型(如CNN和Transformer)雖各有優勢,但CNN難以建模長距離依賴&…

CV - 目標檢測

物體檢測 目標檢測和圖片分類的區別: 圖像分類(Image Classification) 目的:圖像分類的目的是識別出圖像中主要物體的類別。它試圖回答“圖像是什么?”的問題。 輸出:通常輸出是一個標簽或一組概率值&am…

高并發秒殺系統設計:關鍵技術解析與典型陷阱規避

電商、在線票務等眾多互聯網業務場景中,高并發秒殺活動屢見不鮮。這類活動往往在短時間內會涌入海量的用戶請求,對系統架構的性能、穩定性和可用性提出了極高的挑戰。曾經,高并發秒殺架構設計讓許多開發者望而生畏,然而&#xff0…

藍橋杯--結束

沖刺題單 基礎 一、簡單模擬(循環數組日期進制) (一)日期模擬 知識點 1.把月份寫為數組,二月默認為28天。 2.寫一個判斷閏年的方法,然后循環年份的時候判斷并更新二月的天數 3.對于星期數的計算&#…

13、nRF52xx藍牙學習(GPIOTE組件方式的任務配置)

下面再來探討下驅動庫如何實現任務的配置,驅動庫的實現步驟應該和寄存器方式對應,關 鍵點就是如何調用驅動庫的函數。 本例里同樣的對比寄存器方式編寫兩路的 GPOITE 任務輸出,一路配置為輸出翻轉,一路設 置為輸出低電平。和 …

Java的基本語法(1)

一、運算符和表達式 舉例說明什么是運算符,什么是表達式: int a 1; int b 2; int c a b; 在這個例子當中,是運算符,并且是算術運算符 ab是表達式,因為是運算符,所以ab是算術表達式 1.1算術運算符 …

C++學習之密碼學知識

目錄 1.文檔介紹 2.知識點概述 3.項目準備 4.序列化介紹 5.項目中基礎組件介紹 6.基礎模塊在項目中作用 7.項目中其他模塊介紹 8.加密三要素 9.對稱加密和非堆成加密 10.對稱和非對稱加密特點 11.堆成加密算法des 12.des對稱加密算法 13.對稱加密算法aes 14.知識點…

安裝vllm

ubuntu 22.04, RTX3080, cuda 12.1, cudnn 8.9.7,cuda和cudnn的安裝參考:https://blog.csdn.net/m0_52111823/article/details/147154526?spm1001.2014.3001.5501。 查看版本對應關系,下載12.1對應的whl包,https://github.com/vl…