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

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

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

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

一、為什么需要誤差棒

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

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

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

二、準(zhǔn)備工作:安裝必要的庫(kù)

在開始之前,我們需要確保電腦上安裝了兩個(gè) Python 庫(kù):

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

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

pip install numpy matplotlib

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

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

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

import numpy as np
import matplotlib.pyplot as plt
# 1. 準(zhǔn)備數(shù)據(jù)
labels = ['samp1', 'samp2', 'samp3', 'samp4', 'samp5']  # x軸標(biāo)簽(樣本名稱)
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è)置坐標(biāo)軸和柱寬
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. 添加標(biāo)簽、標(biāo)題和圖例
ax.set_xlabel('Samples')  # x軸名稱
ax.set_ylabel('RMSE (m)')  # y軸名稱(這里以RMSE為例,可替換為你的指標(biāo))
ax.set_title('Comparison of RMSE Across Samples')  # 圖表標(biāo)題
ax.set_xticks(x)  # 設(shè)置x軸刻度位置
ax.set_xticklabels(labels)  # 設(shè)置x軸刻度標(biāo)簽(替換為樣本名稱)
ax.legend()  # 顯示圖例(區(qū)分A/B/C組)
# 6. 美化圖表
ax.yaxis.grid(True)  # 添加y軸網(wǎng)格線(方便讀數(shù))
ax.set_facecolor('white')  # 設(shè)置圖表背景為白色
# 7. 顯示圖形
plt.tight_layout()  # 自動(dòng)調(diào)整布局,避免標(biāo)簽重疊
plt.show()  # 顯示圖表

 運(yùn)行代碼后,你會(huì)得到一張這樣的圖表:

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

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

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

1. 導(dǎo)入庫(kù)

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

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

# x軸標(biāo)簽(樣本名稱)
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ù)的誤差范圍(誤差棒長(zhǎng)度)
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ù)的誤差值(比如標(biāo)準(zhǔn)差、標(biāo)準(zhǔn)誤),決定了誤差棒的長(zhǎng)度。

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

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

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

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

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

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

# 繪制A組:x軸位置在基準(zhǔn)位置左側(cè)(x - width)
rects1 = ax.bar(x - width, A_means, width, yerr=A_errors, label='A', color='#66c2a5', capsize=5)
# 繪制B組:x軸位置在基準(zhǔn)位置(x)
rects2 = ax.bar(x, B_means, width, yerr=B_errors, label='B', color='#fc8d62', capsize=5)
# 繪制C組:x軸位置在基準(zhǔn)位置右側(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 軸位置(錯(cuò)開排列,避免重疊);
  • 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:誤差棒頂部 / 底部的 “帽子” 大小(讓誤差棒更美觀,避免變成一條細(xì)線)。

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

6. 添加標(biāo)簽、標(biāo)題和圖例

ax.set_xlabel('Samples')  # x軸名稱
ax.set_ylabel('RMSE (m)')  # y軸名稱(根據(jù)你的數(shù)據(jù)修改,比如“準(zhǔn)確率”“平均值”)
ax.set_title('Comparison of RMSE Across Samples')  # 圖表標(biāo)題
ax.set_xticks(x)  # 設(shè)置x軸刻度位置為基準(zhǔn)位置
ax.set_xticklabels(labels)  # 用樣本名稱替換x軸刻度(默認(rèn)是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è)置圖表背景為白色(默認(rèn)可能是淺灰色)

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

8. 顯示圖表

plt.tight_layout()  # 自動(dòng)調(diào)整布局,避免標(biāo)簽被截?cái)啵ū热鐦?biāo)題、軸標(biāo)簽超出窗口)
plt.show()  # 顯示圖表窗口
  • plt.tight_layout() 是個(gè)非常實(shí)用的函數(shù),能自動(dòng)調(diào)整圖表元素的位置,避免標(biāo)簽重疊或被截?cái)啵?/li>
  • plt.show() 用于在屏幕上顯示繪制好的圖表。

五、代碼實(shí)現(xiàn)

 如下圖所示:

六、總結(jié)

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

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

只要理解了每一步的邏輯,你就能輕松修改代碼,適配自己的數(shù)據(jù)集??烊ピ囋囉米约旱臄?shù)據(jù)生成圖表吧!

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

相關(guān)文章

最新評(píng)論

上思县| 财经| 宁陵县| 临洮县| 怀来县| 平潭县| 衡水市| 鸡东县| 青海省| 海阳市| 永年县| 铜梁县| 曲周县| 永修县| 开远市| 湖南省| 定陶县| 临城县| 白玉县| 加查县| 崇阳县| 隆林| 岳阳市| 南皮县| 高州市| 卓资县| 福州市| 安丘市| 威海市| 富源县| 嘉鱼县| 丘北县| 都兰县| 阿勒泰市| 同德县| 南木林县| 房山区| 栾城县| 宁南县| 禹州市| 南通市|