一周學會Matplotlib3 Python 數據可視化-繪制誤差條形圖

鋒哥原創的Matplotlib3 Python數據可視化視頻教程:

2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili

課程介紹

本課程講解利用python進行數據可視化 科研繪圖-Matplotlib,學習Matplotlib圖形參數基本設置,繪圖參數及主要函數,以及Matplotlib基礎繪圖,和Matplotlib高級繪圖。

繪制誤差條形圖

誤差條形圖是數據可視化中展示數據不確定性或變異性的重要工具。Matplotlib提供了強大的功能來創建各種類型的誤差條形圖,包括對稱誤差、非對稱誤差、水平誤差條等。

plt.errorbar() 是 Matplotlib 中用于繪制帶誤差線的數據點的核心函數,常用于科學可視化中展示數據的不確定性。以下是該方法的詳細解析:

plt.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, **kwargs)

必需參數

參數類型說明
xarray數據點的 x 坐標值
yarray數據點的 y 坐標值

🔍 誤差線控制參數

  1. 誤差方向

參數默認值說明
yerrNoney方向的誤差值,支持多種格式: - 標量:所有點使用相同誤差值 - 一維數組:每個點單獨誤差值 - 2xN數組:[下誤差, 上誤差]
xerrNonex方向的誤差值(格式同yerr
  1. 誤差線樣式

參數默認值說明
fmt''數據點標記格式(同plt.plot()格式) 例如:'o-'(圓點連線),'s--'(方形虛線)
ecolorNone誤差線顏色(默認與數據點相同)
elinewidthNone誤差線寬度(默認1.5)
capsizeNone誤差線端帽長度(單位:點)
capthickNone誤差線端帽厚度(默認同誤差線)
  1. 特殊誤差類型

參數默認值說明
lolims/uplimsFalse只顯示下/上限的單向誤差線
xlolims/xuplimsFalsex方向的單向誤差線
barsaboveFalse誤差線顯示在數據點上方

我們看一個對稱誤差條形圖示例:

import matplotlib.pyplot as plt
import numpy as np
?
# 創建示例數據
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 32, 67]
errors = [2.5, 3.2, 4.1, 2.8, 3.9] ?# 對稱誤差值
?
plt.figure(figsize=(10, 6))
?
# 繪制條形圖并添加誤差條
bars = plt.bar(categories, values, color='skyblue', edgecolor='black', alpha=0.8)
plt.errorbar(categories, values, yerr=errors, fmt='none',ecolor='red', elinewidth=2, capsize=8, capthick=2)
?
# 添加數據標簽
for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width() / 2., height + 1,f'{height:.1f}', ha='center', va='bottom', fontsize=10)
?
# 圖表裝飾
plt.title('基礎對稱誤差條形圖', fontsize=14, pad=20)
plt.xlabel('類別', fontsize=12)
plt.ylabel('測量值', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.ylim(0, 80)
plt.tight_layout()
plt.show()

我們在看一個非對稱誤差條形圖示例:

import matplotlib.pyplot as plt
import numpy as np
?
# 創建示例數據
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 32, 67]
# 非對稱誤差數據
lower_errors = [1.8, 2.5, 3.0, 2.0, 3.2] ?# 下誤差
upper_errors = [3.2, 3.8, 5.2, 3.6, 4.6] ?# 上誤差
asymmetric_errors = [lower_errors, upper_errors] ?# 非對稱誤差格式
?
plt.figure(figsize=(10, 6))
?
# 繪制條形圖
bars = plt.bar(categories, values, color='lightgreen', edgecolor='black', alpha=0.8)
?
# 添加非對稱誤差條
plt.errorbar(categories, values, yerr=asymmetric_errors, fmt='none',ecolor='purple', elinewidth=2, capsize=8, capthick=2)
?
# 添加數據標簽
for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width() / 2., height + 1,f'{height:.1f}', ha='center', va='bottom', fontsize=10)
?
# 圖表裝飾
plt.title('非對稱誤差條形圖', fontsize=14, pad=20)
plt.xlabel('類別', fontsize=12)
plt.ylabel('測量值', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.ylim(0, 80)
plt.tight_layout()
plt.show()

分組誤差條形圖示例:

import numpy as np
?
# 創建多組數據
categories = ['Group 1', 'Group 2', 'Group 3', 'Group 4']
men_means = [22, 30, 35, 28]
women_means = [25, 32, 30, 35]
men_errors = [1.8, 2.5, 3.0, 2.5]
women_errors = [2.2, 2.8, 2.5, 3.0]
?
x = np.arange(len(categories)) ?# 標簽位置
width = 0.35 ?# 條形寬度
?
plt.figure(figsize=(12, 7))
?
# 繪制男性組條形圖
rects1 = plt.bar(x - width / 2, men_means, width,label='男性', color='royalblue', alpha=0.8,yerr=men_errors, error_kw=dict(elinewidth=2, ecolor='darkblue', capsize=6))
?
# 繪制女性組條形圖
rects2 = plt.bar(x + width / 2, women_means, width,label='女性', color='lightcoral', alpha=0.8,yerr=women_errors, error_kw=dict(elinewidth=2, ecolor='darkred', capsize=6))
?
?
# 添加數據標簽
def autolabel(rects):"""在條形圖上方附加文本標簽,顯示條形高度"""for rect in rects:height = rect.get_height()plt.annotate(f'{height:.1f}',xy=(rect.get_x() + rect.get_width() / 2, height),xytext=(0, 3), ?# 3點垂直偏移textcoords="offset points",ha='center', va='bottom', fontsize=10)
?
?
autolabel(rects1)
autolabel(rects2)
?
# 圖表裝飾
plt.title('分組誤差條形圖(按性別)', fontsize=14, pad=20)
plt.xlabel('實驗組', fontsize=12)
plt.ylabel('平均得分', fontsize=12)
plt.xticks(x, categories)
plt.legend(loc='upper right', frameon=True)
plt.grid(axis='y', linestyle='--', alpha=0.5)
plt.ylim(0, 45)
plt.tight_layout()
plt.show()

水平誤差條形圖:

import matplotlib.pyplot as plt
import numpy as np
?
# 創建水平數據
countries = ['挪威', '德國', '加拿大', '美國', '荷蘭']
gold_medals = [16, 12, 11, 9, 8]
errors = [1.2, 0.9, 1.1, 0.8, 0.7] ?# 水平誤差
?
plt.figure(figsize=(10, 6))
?
# 繪制水平條形圖
bars = plt.barh(countries, gold_medals, color='gold', edgecolor='darkorange', height=0.7, alpha=0.9)
?
# 添加水平誤差條
plt.errorbar(gold_medals, countries, xerr=errors, fmt='none',ecolor='darkred', elinewidth=2, capsize=6, capthick=2)
?
# 添加數據標簽
for bar in bars:width = bar.get_width()plt.text(width + 0.5, bar.get_y() + bar.get_height() / 2,f'{width:.0f}', ha='left', va='center', fontsize=10)
?
# 圖表裝飾
plt.title('冬奧會金牌數(含不確定性)', fontsize=14, pad=20)
plt.xlabel('金牌數量', fontsize=12)
plt.ylabel('國家', fontsize=12)
plt.xlim(0, 20)
plt.grid(axis='x', linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

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

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

相關文章

JVM垃圾回收器

垃圾回收算法標記-復制缺點:內存利用率低,有一塊區域無法使用。標記-清除缺點:1. 效率問題 (如果需要標記的對象太多,效率不高)2. 空間問題(標記清除后會產生大量不連續的碎片)標記-整理分代收集根據對象存…

科研工具的一些注意事項

Origin Origin導入數據之后,可以考慮 [刪除數據連接器…] 導入數據之后,刪除數據連接,這樣當原來的文件移動之后,就不影響origin文件里面的數據。不然就會出現空白數據:當然,沒有數據了也可以加載出來&…

美國服務器環境下Windows容器工作負載智能彈性伸縮

在北美數據中心加速數字化轉型的今天,企業客戶日益重視Windows容器工作負載的智能化管理。本文將深入探討基于Azure Stack HCI(混合云基礎設施)的彈性伸縮方案如何突破傳統資源調度瓶頸,通過分析指標收集、策略配置、混合云聯動三…

歐姆龍CP系列以太網通訊實現上位機與觸摸屏監控

一、行業痛點在現代工業生產中,自動化生產線的控制系統的高效性與智能化程度對生產效率和產品質量有著至關重要的影響。然而,許多傳統工業生產線中使用的歐姆龍CP系列系列PLC以太網模塊,由于自身設計原因,并未配備以太網接口&…

【大語言模型 00】導讀

【大語言模型00】導讀:你的LLM全棧工程師進階之路關鍵詞:大語言模型、LLM、Transformer、深度學習、AI工程化、全棧開發、技術路線圖摘要:這是一份完整的大語言模型學習指南,涵蓋從數學基礎到商業落地的200篇深度文章。無論你是AI…

Business Magic

題目描述There are n stores located along a street, numbered from 1 to n from nearest to farthest. Last month, the storek had a net profit of rk . If rk is positive, it represents a profit of rk dollars; if rk is negative, it represents a loss of ?rk dolla…

在ubuntu系統上離線安裝jenkins的做法

作者:朱金燦 來源:clever101的專欄 1.安裝java環境和下載war包: Jenkins 依賴于 Java 環境(OpenJDK 11 或更高版本): # 安裝OpenJDK 11和字體依賴 sudo dpkg -i openjdk-11-jre-headless_*.deb fontconfi…

圖像相似度算法匯總及Python實現

下面整理了一些圖像相似度算法,可根據不同的需求選擇不同的算法,對每種算法進行了簡單描述并給出Python實現: 1. 基于像素的算法: (1).MSE(Mean Squared Error):均方誤差,通過計算兩幅圖像對應像素值差的平…

IO流與單例模式

單例模式 單例模式是指一個類只能有一個對象。 餓漢模式 在單例模式下,在程序開始(main函數運行前)的時候創建一個對象,這之后就不能再創建這個對象。 class HungryMan { public:static HungryMan* getinstance(){return &ins…

Java設計模式之依賴倒置原則使用舉例說明

示例1:司機駕駛汽車 問題場景:司機類直接依賴奔馳車類,新增寶馬車需修改司機類代碼。 // 未遵循DIP class Benz { public void run() { /*...*/ } } class Driver { public void drive(Benz benz) { benz.run(); } } // 遵循DIP:…

【Docker】openEuler 使用docker-compose部署gitlab-ce

docker-compose配置 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.comenvironment:GITLAB_OMNIBUS_CONFIG: |# Add any other gitlab.rb configuration here, each on its own lineexternal_url https://gi…

ElasticSearch 父子文檔使用簡記

一. ES parent-child 文檔簡介 ES 提供了類似數據庫中 Join 聯結的實現,可以通過 Join 類型的字段維護父子關系的數據,其父文檔和子文檔可以單獨維護。 二. 父子文檔的索引創建與數據插入 ES 父子文檔的創建可以分為下面三步: 創建索引 M…

【Linux】編輯器vim的使用

目錄 1. vim的基本概念 2. vim的基本使用 3. vim命令模式操作 3.1 移動光標 3.2 刪除 3.3 復制 3.4 替換 3.5 撤銷 3.6 更改 3.7 跳轉 4. vim底行模式操作 4.1 列出行號 4.2 跳到文件中的某行 4.3 查找字符 4.4 保存文件 4.5 離開vim 1. vim的基本概念 Vim&…

《零基礎掌握飛算Java AI:核心概念與案例解析》

前引:飛算科技是一家專注于企業級智能化技術服務的公司,核心領域包括AI、大數據、云計算等。其Java AI解決方案主要面向企業級應用開發,提供從數據處理到模型部署的全流程支持!飛算Java AI是一款基于人工智能技術的Java開發輔助工…

Chrome騰訊翻譯插件transmart的安裝

文章目錄一、官網地址二、安裝過程1. 下載插件2. 解壓crx3, chrome安裝三、如何使用一、官網地址 騰訊翻譯插件官網 二、安裝過程 1. 下載插件 點擊上面的官網地址,下拉到如圖所示chrome插件位置,點擊立即下載 2. 解壓crx 從壓縮文件中解壓出crx文…

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找

IOMMU的2級地址翻譯機制及多級(2~5)頁表查找 摘要:IOMMU是現代計算機系統中用于I/O設備(如GPU、NIC、網絡接口卡)的地址翻譯和保護機制,類似于CPU的MMU(Memory Management Unit),但專為設備DMA(Direct Memory Access,直接內存訪問)設計。它支持虛擬化環境(…

C++STL標準模板庫詳解

一、引言STL(Standard Template Library)是 C 標準庫的核心組成部分,其中容器(Containers) 作為數據存儲的基礎組件,為開發者提供了豐富的數據結構選擇。本文將聚焦 STL 容器的核心類型,結合具體…

神經網絡 常見分類

📚 神經網絡的常見分類方式可以從不同角度來劃分,以下是幾種主流思路,幫你快速梳理清晰:1?? 按網絡結構分類前饋神經網絡(Feedforward Neural Network, FNN) 數據從輸入層→隱藏層→輸出層單向傳遞&#…

生產環境Redis緩存穿透與雪崩防護性能優化實戰指南

生產環境Redis緩存穿透與雪崩防護性能優化實戰指南 在當下高并發場景下,Redis 作為主流緩存組件,能夠極大地提升讀寫性能,但同時也容易引發緩存穿透、緩存擊穿及緩存雪崩等問題,導致后端依賴數據庫的請求激增,系統穩定…

【洛谷刷題】用C語言和C++做一些入門題,練習洛谷IDE模式:分支機構(一)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題、洛谷刷題、C/C基礎知識知識強化補充、C/C干貨分享&學習過程記錄 🍉學習方向:C/C方向 ??人…