最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python輕松繪制帶誤差棒的柱狀圖

 更新時間:2025年08月05日 09:36:31   作者:Code_Verse  
誤差棒(Error Bar)是數(shù)據(jù)可視化中傳遞可靠性信息的 “利器”,它能在展示數(shù)據(jù)平均值的同時,直觀呈現(xiàn)數(shù)據(jù)的波動范圍,下面我們就來看看如何使用Python輕松繪制帶誤差棒的柱狀圖吧

大家好!今天來教大家一個超實用的數(shù)據(jù)分析技能 —— 用 Python 制作帶誤差棒的柱狀圖。誤差棒(Error Bar)是數(shù)據(jù)可視化中傳遞可靠性信息的 “利器”,它能在展示數(shù)據(jù)平均值的同時,直觀呈現(xiàn)數(shù)據(jù)的波動范圍(如標準差、標準誤等)。無論是學生做實驗報告、科研人員展示成果,還是職場人匯報數(shù)據(jù)分析,這個技能都能讓你的圖表瞬間提升專業(yè)度,讓數(shù)據(jù)更有說服力。

一、為什么需要誤差棒

在數(shù)據(jù)分析中,我們常常用平均值來代表一組數(shù)據(jù)的 “典型值”,但平均值背后的波動同樣重要。比如:

  • 兩組數(shù)據(jù)的平均值可能相近,但一組數(shù)據(jù)波動很小(可靠性高),另一組波動很大(可靠性低);
  • 誤差棒能幫讀者快速判斷數(shù)據(jù)差異是否 “顯著”(比如兩組誤差棒是否重疊)。

今天我們就用 Python 的matplotlib庫來實現(xiàn)這個功能,全程代碼清晰易懂,小白也能輕松上手~

二、準備工作:安裝必要的庫

在開始之前,我們需要確保電腦上安裝了兩個 Python 庫:

  • numpy:用于數(shù)值計算(比如生成坐標軸);
  • matplotlib.pyplot:Python 最常用的繪圖庫。

如果還沒安裝,打開終端(或命令提示符)輸入以下命令:

pip install numpy matplotlib

安裝完成后,就可以開始寫代碼啦!

三、完整代碼:帶誤差棒的柱狀圖實現(xiàn)

先直接上完整代碼,后面會逐行解釋每一步的作用:

import numpy as np
import matplotlib.pyplot as plt
# 1. 準備數(shù)據(jù)
labels = ['samp1', 'samp2', 'samp3', 'samp4', 'samp5']  # x軸標簽(樣本名稱)
A_means = [0.25, 0.22, 0.25, 0.2, 0.2]  # A組數(shù)據(jù)的平均值
B_means = [0.4, 0.26, 0.27, 0.35, 0.22]  # B組數(shù)據(jù)的平均值
C_means = [0.3, 0.25, 0.28, 0.3, 0.18]  # C組數(shù)據(jù)的平均值

A_errors = [0.05, 0.04, 0.05, 0.03, 0.04]  # A組數(shù)據(jù)的誤差范圍
B_errors = [0.02, 0.03, 0.04, 0.03, 0.02]  # B組數(shù)據(jù)的誤差范圍
C_errors = [0.03, 0.02, 0.03, 0.02, 0.03]  # C組數(shù)據(jù)的誤差范圍
# 2. 設(shè)置坐標軸和柱寬
x = np.arange(len(labels))  # 生成x軸刻度位置(0,1,2,3,4)
width = 0.2  # 柱子的寬度
# 3. 創(chuàng)建圖形和軸
fig, ax = plt.subplots()
# 4. 繪制柱狀圖(帶誤差棒)
rects1 = ax.bar(x - width, A_means, width, yerr=A_errors, label='A', color='#66c2a5', capsize=5)
rects2 = ax.bar(x, B_means, width, yerr=B_errors, label='B', color='#fc8d62', capsize=5)
rects3 = ax.bar(x + width, C_means, width, yerr=C_errors, label='C', color='#8da0cb', capsize=5)
# 5. 添加標簽、標題和圖例
ax.set_xlabel('Samples')  # x軸名稱
ax.set_ylabel('RMSE (m)')  # y軸名稱(這里以RMSE為例,可替換為你的指標)
ax.set_title('Comparison of RMSE Across Samples')  # 圖表標題
ax.set_xticks(x)  # 設(shè)置x軸刻度位置
ax.set_xticklabels(labels)  # 設(shè)置x軸刻度標簽(替換為樣本名稱)
ax.legend()  # 顯示圖例(區(qū)分A/B/C組)
# 6. 美化圖表
ax.yaxis.grid(True)  # 添加y軸網(wǎng)格線(方便讀數(shù))
ax.set_facecolor('white')  # 設(shè)置圖表背景為白色
# 7. 顯示圖形
plt.tight_layout()  # 自動調(diào)整布局,避免標簽重疊
plt.show()  # 顯示圖表

 運行代碼后,你會得到一張這樣的圖表:

(注:實際運行后會彈出窗口顯示圖表,包含 5 個樣本、3 組數(shù)據(jù),每個柱子頂部都有誤差棒)

四、代碼逐行解析:小白也能看懂

下面我們來詳細解釋每一步的作用,幫你理解代碼邏輯,以后就能根據(jù)自己的需求修改啦~

1. 導入庫

import numpy as np
import matplotlib.pyplot as plt
  • numpy 縮寫為 np:用于生成 x 軸的刻度位置(后面會用到);
  • matplotlib.pyplot 縮寫為 plt:用于繪制圖表的核心庫。

2. 準備數(shù)據(jù):核心中的核心

# x軸標簽(樣本名稱)
labels = ['samp1', 'samp2', 'samp3', 'samp4', 'samp5']
# 各組數(shù)據(jù)的平均值(柱子高度)
A_means = [0.25, 0.22, 0.25, 0.2, 0.2]
B_means = [0.4, 0.26, 0.27, 0.35, 0.22]
C_means = [0.3, 0.25, 0.28, 0.3, 0.18]
# 各組數(shù)據(jù)的誤差范圍(誤差棒長度)
A_errors = [0.05, 0.04, 0.05, 0.03, 0.04]
B_errors = [0.02, 0.03, 0.04, 0.03, 0.02]
C_errors = [0.03, 0.02, 0.03, 0.02, 0.03]
  • labels:x 軸上顯示的文本(比如樣本名稱、類別等);
  • xxx_means:每組數(shù)據(jù)的平均值,決定了柱子的高度;
  • xxx_errors:每組數(shù)據(jù)的誤差值(比如標準差、標準誤),決定了誤差棒的長度。

小提示:這里的數(shù)據(jù)是示例,你可以替換成自己的實際數(shù)據(jù),注意保持列表長度一致(比如有 5 個樣本,每個列表都要有 5 個元素)。

3. 設(shè)置坐標軸和柱寬

x = np.arange(len(labels))  # 生成x軸刻度位置:[0, 1, 2, 3, 4]
width = 0.2  # 柱子的寬度
  • np.arange(len(labels)):根據(jù)樣本數(shù)量生成連續(xù)的整數(shù)(比如 5 個樣本就是[0,1,2,3,4]),作為 x 軸的 “基準位置”;
  • width:每個柱子的寬度,后續(xù)會用它來調(diào)整多組數(shù)據(jù)的位置(避免柱子重疊)。

4. 創(chuàng)建圖形和軸

fig, ax = plt.subplots()
  • fig:代表整個圖表窗口(可以理解為 “畫布”);
  • ax:代表圖表中的坐標軸(可以理解為 “繪圖區(qū)域”),后續(xù)的繪圖操作主要通過ax實現(xiàn)。

5. 繪制帶誤差棒的柱狀圖(關(guān)鍵步驟)

# 繪制A組:x軸位置在基準位置左側(cè)(x - width)
rects1 = ax.bar(x - width, A_means, width, yerr=A_errors, label='A', color='#66c2a5', capsize=5)
# 繪制B組:x軸位置在基準位置(x)
rects2 = ax.bar(x, B_means, width, yerr=B_errors, label='B', color='#fc8d62', capsize=5)
# 繪制C組:x軸位置在基準位置右側(cè)(x + width)
rects3 = ax.bar(x + width, C_means, width, yerr=C_errors, label='C', color='#8da0cb', capsize=5)

這是最核心的一行代碼,ax.bar() 用于繪制柱狀圖,參數(shù)含義:

  • x - width / x / x + width:三組柱子的 x 軸位置(錯開排列,避免重疊);
  • A_means / B_means / C_means:柱子的高度(平均值);
  • width:柱子寬度(前面定義的0.2);
  • yerr=xxx_errors誤差棒的關(guān)鍵參數(shù),指定 y 軸方向的誤差范圍(如果需要 x 軸誤差棒,用xerr);
  • label:每組數(shù)據(jù)的名稱(用于圖例);
  • color:柱子顏色(這里用了美觀的 RGB 色值,可自行替換);
  • capsize=5:誤差棒頂部 / 底部的 “帽子” 大?。ㄗ屨`差棒更美觀,避免變成一條細線)。

小技巧:如果有更多組數(shù)據(jù)(比如 D 組),可以繼續(xù)調(diào)整位置(x + 2*width),同時注意控制總寬度不要超過刻度間隔哦~

6. 添加標簽、標題和圖例

ax.set_xlabel('Samples')  # x軸名稱
ax.set_ylabel('RMSE (m)')  # y軸名稱(根據(jù)你的數(shù)據(jù)修改,比如“準確率”“平均值”)
ax.set_title('Comparison of RMSE Across Samples')  # 圖表標題
ax.set_xticks(x)  # 設(shè)置x軸刻度位置為基準位置
ax.set_xticklabels(labels)  # 用樣本名稱替換x軸刻度(默認是0,1,2...)
ax.legend()  # 顯示圖例(區(qū)分不同組數(shù)據(jù))

這些參數(shù)用于完善圖表信息,讓讀者能快速理解圖表內(nèi)容。 

7. 美化圖表

ax.yaxis.grid(True)  # 添加y軸網(wǎng)格線(方便讀取具體數(shù)值)
ax.set_facecolor('white')  # 設(shè)置圖表背景為白色(默認可能是淺灰色)

 簡單的美化能讓圖表更清晰,網(wǎng)格線尤其適合需要精確讀數(shù)的場景。

8. 顯示圖表

plt.tight_layout()  # 自動調(diào)整布局,避免標簽被截斷(比如標題、軸標簽超出窗口)
plt.show()  # 顯示圖表窗口
  • plt.tight_layout() 是個非常實用的函數(shù),能自動調(diào)整圖表元素的位置,避免標簽重疊或被截斷;
  • plt.show() 用于在屏幕上顯示繪制好的圖表。

五、代碼實現(xiàn)

 如下圖所示:

六、總結(jié)

帶誤差棒的柱狀圖是數(shù)據(jù)可視化中非常實用的工具,今天我們用 matplotlib 實現(xiàn)了它,核心步驟包括:

  • 準備數(shù)據(jù)(平均值 + 誤差值);
  • 設(shè)置坐標軸和柱寬;
  • 用 ax.bar() 繪制柱狀圖,通過 yerr 參數(shù)添加誤差棒;
  • 完善標簽、標題和圖例;
  • 美化并顯示圖表。

只要理解了每一步的邏輯,你就能輕松修改代碼,適配自己的數(shù)據(jù)集。快去試試用自己的數(shù)據(jù)生成圖表吧!

到此這篇關(guān)于使用Python輕松繪制帶誤差棒的柱狀圖的文章就介紹到這了,更多相關(guān)Python繪制柱狀圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬取個人微信朋友信息操作示例

    Python爬取個人微信朋友信息操作示例

    這篇文章主要介紹了Python爬取個人微信朋友信息操作,涉及Python使用itchat包實現(xiàn)微信朋友信息爬取操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • 淺談django的render函數(shù)的參數(shù)問題

    淺談django的render函數(shù)的參數(shù)問題

    今天小編就為大家分享一篇淺談django的render函數(shù)的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 對TensorFlow的assign賦值用法詳解

    對TensorFlow的assign賦值用法詳解

    今天小編就為大家分享一篇對TensorFlow的assign賦值用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python將Word文檔轉(zhuǎn)為PDF的兩種方法

    Python將Word文檔轉(zhuǎn)為PDF的兩種方法

    這篇文章主要介紹了兩種將docx和doc文件轉(zhuǎn)換為PDF的方法,方法一使用了docx2pdf模塊,方法二使用了win32com模塊,文中通過代碼及圖文介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式

    numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式

    這篇文章主要介紹了numpy刪除單行、刪除單列、刪除多列實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python開發(fā)必知必會標識符UUID全面使用指南

    Python開發(fā)必知必會標識符UUID全面使用指南

    在Python編程中,UUID(通用唯一標識符)是一個非常有用的工具,用于生成唯一的標識符,本文將深入探討Python中UUID的用法、不同版本的UUID、以及如何在實際應(yīng)用中充分利用UUID的優(yōu)勢
    2023-12-12
  • python?實現(xiàn)syslog?服務(wù)器的詳細過程

    python?實現(xiàn)syslog?服務(wù)器的詳細過程

    這篇文章主要介紹了python?實現(xiàn)syslog服務(wù)器的詳細過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Python語言描述隨機梯度下降法

    Python語言描述隨機梯度下降法

    這篇文章主要介紹了Python語言描述隨機梯度下降法,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 盤點Python中讀取和提取JSON文件的4種方法

    盤點Python中讀取和提取JSON文件的4種方法

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,Python中提供了多種方式來讀取和處理JSON文件,本文將詳細介紹四種常見的方法,希望對大家有所幫助
    2024-03-03
  • python3中sys.argv的實例用法

    python3中sys.argv的實例用法

    在本篇文章里小編給大家分享的是關(guān)于python3中sys.argv的實例用法內(nèi)容,需要的朋友們可以學習下。
    2020-04-04

最新評論

抚顺市| 榆社县| 集贤县| 阿克| 辽阳市| 汾西县| 屏边| 泾阳县| 南漳县| 得荣县| 同江市| 弋阳县| 依兰县| 杭锦旗| 太原市| 荔浦县| 五指山市| 甘孜县| 清涧县| 江都市| 深泽县| 南雄市| 寻甸| 郑州市| 彩票| 潮安县| 舟山市| 锡林浩特市| 迭部县| 毕节市| 鹤山市| 敦煌市| 鹤峰县| 祁连县| 满城县| 贺兰县| 呼和浩特市| 集贤县| 宜兴市| 措美县| 义乌市|