繪製帶誤差分析的柱狀圖

来源:https://www.cnblogs.com/DavidShang/p/18290135
-Advertisement-
Play Games

1.檢查原始數據 原始數據展示如下: 工況 工況1 工況2 工況3 工況4 工況5 M 89.37 86.05 92.95 87.44 73.56 DF-1 87.45 80.98 89.68 84.43 73.46 DF-2 86.00 81.54 89.68 84.43 73.46 UP 85. ...


1.檢查原始數據

原始數據展示如下:

工況 工況1 工況2 工況3 工況4 工況5
M 89.37 86.05 92.95 87.44 73.56
DF-1 87.45 80.98 89.68 84.43 73.46
DF-2 86.00 81.54 89.68 84.43 73.46
UP 85.30 85.23 87.59 86.64 64.32
△DF-1 1.91 5.07 3.26 3.00 /
△DF-2 3.37 4.51 3.26 3.00 /
△UP 4.06 0.82 5.36 0.79 /

2.導入資料庫

import pandas as pd 
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']   # 用來正常顯示中文標簽顯示錯誤代碼
plt.rcParams['axes.unicode_minus']=False     # 顯示負號

小提示:
pandas為python提供了高效的數據處理、數據清洗與整理的工具;
matplotlib是利用python實現的繪圖套件;
numpy是一個運行速度非常快的數學庫,可以對從資料庫中檢索出的數據進行高效的數值計算和分析。

3.導入文件數據

path=r'文件路徑\數據.xlsx'
data=pd.read_excel(path,sheet_name='python數據',index_col=0).T 
data

輸出結果展示:

工況 M DF-1 DF-2 UP △DF-1 △DF-2 △UP
工況1 89.365599 87.451556 85.996861 85.302768 1.914043 3.368738 4.062831
工況2 86.046684 80.975119 81.536831 85.230923 5.071565 4.509853 0.815761
工況3 92.947416 89.684997 89.684997 87.590565 3.262419 3.262419 5.356852
工況4 87.435423 84.432082 84.432082 86.640972 3.003341 3.003341 0.794451
工況5 73.557850 73.464974 73.464974 64.315733 0.001000 0.001000 0.001000

有沒有發現這裡輸出的數據表格和原始數據做了轉置,並且△DF-1,△DF-2和△UP的工況5數據發生了變化,解釋一下:
1.數據展示代碼中對原始數據表格做了轉置,這裡為了展示該功能,實際操作中要靈活處理;
2.原始數據中的“/”會報錯,而且不能有空值,可以將0數據設置成0.0001這種無限小的數字。

4.繪圖

width = 0.2   #設置柱子的寬度
labels=['工況1', '工況2', '工況3', '工況4', '工況5'] #設置x軸標簽

#設置柱子的數據與誤差線的數據,此處註意:不能有空值,否則報錯,可以將0數據設置成0.0001這種無限小的數字
x=np.arange(len(labels)) 
bar1=data['M'].tolist()
bar1_err=[0,0,0,0,0]
bar2=data['DF-1'].tolist()
bar2_err=data['△DF-1'].tolist()
bar3=data['DF-2'].tolist()
bar3_err=data['△DF-2'].tolist()
bar4=data['UP'].tolist()
bar4_err=data['△UP'].tolist()

#繪圖
fig,ax=plt.subplots()
p1=ax.bar(x-0.3, bar1, width,color='royalblue',yerr=bar1_err,alpha=0.5,label='M')
p2=ax.bar(x-0.1, bar2, width,color='grey',yerr=bar2_err,alpha=0.3,label='DF-1')
p3=ax.bar(x+0.1, bar3, width,color='royalblue',yerr=bar3_err,alpha=0.9,label='DF-2')
p4=ax.bar(x+0.3, bar4, width,color='grey', yerr=bar4_err,alpha=0.6, label='UP')
ax.set_xticks(x)   #此處設置的x刻度個數與xlabel要一致,否則會報錯
ax.set_xticklabels(labels)
ax.set_ylabel('聲壓級(dBA)',fontsize=10)
ax.tick_params(labelsize=10)
ax.legend(fontsize=10)
ax.axis([-0.5,4.5,50,100]) #設置x軸的顯示範圍
#ax.set_title('測試結果對比',fontsize=30)

#設置柱子的標簽
k=[p1,p2,p3,p4]
for p in k:
    for i in range(0,len(p)):
        a=p[i].get_x()+p[i].get_width()/2  #設置標簽的x坐標,此處為x位置+柱子的1/2寬度
        b=p[i].get_height()  #獲取柱子的高度,設置標簽的時候按照柱子高度比例來
        ax.text(a,0.87*b,'{}'.format(int(round(b,0))),alpha=0.9,fontsize=9,ha='center',va='bottom')
        
#利用zip組合來設置誤差的標簽,此處設置誤差標簽時將不想顯示的設置為空值
bar2_err[4]=np.nan  
for t,q,w in zip(x-0.1,bar2,bar2_err): 
    ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9)
    
bar3_err[4]=np.nan
for t,q,w in zip(x+0.1,bar3,bar3_err):  
    ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9) 
    
bar4_err[4]=np.nan
for t,q,w in zip(x+0.3,bar4,bar4_err):  
    ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9)    

輸出結果展示:

歡迎來到海喚魚的個人博客空間
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡要介紹了一、時鐘體系 1、參考手冊 2、時鐘源3種 3、時鐘樹 4.時鐘詳解 HSE時鐘 HSI時鐘 鎖相環時鐘 系統時鐘 HCLK時鐘 PCLK1時鐘 PCLK2時鐘 RTC時鐘 獨立看門狗時鐘: 12S時鐘: 乙太網PHY時鐘: USBPHY時鐘: MCO時鐘輸出 系統時鐘配置函數Setsys... ...
  • 前言 又花了一塊rmb玩玄機。。。啥時候才能5金幣拿下一個應急靶機,只能說功底還沒到家,唯有繼續加油了。。。 簡介 賬號root密碼linuxrz ssh root@IP 1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割 2.ssh爆破成功登陸的IP是多少,如果有多個使用","... ...
  • 痞子衡嵌入式半月刊: 第 104 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回 ...
  • 寫在前面 本隨筆是非常菜的菜雞寫的。如有問題請及時提出。 可以聯繫:[email protected] GitHhub:https://github.com/WindDevil (目前啥也沒有 官方文檔 仍然是一上來就丟出來的官方文檔. 只摘抄了我覺得有意思的部分: 實現特權級機制的根本原因是應用程 ...
  • 本章將和大家分享Linux常用的文件操作命令。廢話不多說,下麵我們直接進入主題。 一、目錄切換(cd命令) 在Linux系統中,cd 是一個用於切換當前工作目錄的命令,它是 "change directory" 的縮寫。基本用法如下所示: 1、不帶參數 示例:cd 或 cd~ 如果cd命令後沒有跟任 ...
  • 一、Certutil 介紹 Windows有一個名為CertUtil的內置程式,可用於在Windows中管理證書。使用此程式可以在Windows中安裝,備份,刪除,管理和執行與證書和證書存儲相關的各種功能。 CertUtil的一個特性是能夠從遠程URL下載證書或任何其他文件,因為certutil是w ...
  • 第十二章 跑馬燈實驗 1)實驗平臺:正點原子DNK210開發板 2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+視頻下載地址:http ...
  • 第十一章 FPIOA管理器實驗 1)實驗平臺:正點原子DNK210開發板 2) 章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+視頻下載地 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...