網站首頁 編程語言 正文
箱線圖
箱線圖一般用來展現數據的分布,如上下四分位值、中位數等,也可以直觀地展示異常點。Matplotlib提供了boxplot()
函數繪制箱線圖。
import matplotlib.pyplot as plt _ = plt.boxplot(range(10)) # 10個數,0-9 plt.show()
箱線圖雖然看起來簡單,但包含的數據信息非常豐富。在上圖中,橙色的線條表示中位數,中間條形的上下邊界分別對應上四分位數(75%的數據都小于該值)與下四位分數(25%的數據小于該值),從條形延伸出兩條線段,兩條線段的終點表示數據的最大值和最小值。
import numpy as np print(np.median(np.arange(10))) # 中位數 print(np.percentile(np.arange(10), 25)) # 下4分位數,也叫第1分位數 print(np.percentile(np.arange(10), 75)) # 上4分位數,也叫第3分位數
4.5 2.25 6.75 Process finished with exit code 0
boxplot()函數還提供了豐富的自定義選項
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None)
● x :繪圖數據。
● notch :是否以凹口的形式展現箱線圖,默認非凹口。
● sym:指定異常點的形狀,默認為+號顯示。
● vert :是否需要將箱線圖垂直放,默認垂直放。
● whis :指定上下須與上下四分位的距離,默認為1.5倍的四分位差。
● positions :指定箱線圖位置,默認為[0,1,2.…]。
● widths :指定箱線圖寬度,默認為0.5。
● patch _ artist :是否填充箱體的顏色。
● meanline :是否用線的形式表示均值,默認用點表示。
● showmeans :是否顯示均值,默認不顯示。
● showcaps :是否顯示箱線圖頂端和末端兩條線,默認顯示。
● showbox :是否顯示箱線圖的箱體,默認顯示。
● showfliers :是否顯示異常值,默認顯示。
● boxprops :設置箱體的屬性,如邊框色、填充色等。
● labels :為箱線圖添加標簽,類似于圖例的作用。
● filerprops :設置異常值的屬性,如異常點的形狀、大小、填充色等。
● medianprops :設置中位數的屬性,如線的類型、粗細等。
● meanprops :設置均值的屬性,如點的大小、顏色等。
● capprops :設置箱線圖頂端和末端線條的屬性,如顏色、粗細等。
● whiskerprops :設置須的屬性,如顏色、粗細、線的類型等。
箱線圖通常用在多組數據比較時
下面代碼展示了3組簡單數據的箱線圖,添加凹口、均值點、顏色以及每組的標簽。
import matplotlib.pyplot as plt a = plt.boxplot([range(10), range(20), range(30)], patch_artist=True, boxprops={'color': 'blue'}, notch=True, showmeans=True, labels=['A', 'B', 'C']) plt.show()
補充:plt.boxplot()函數繪制箱圖、常用方法
實戰
def plt_box_iamge(df): ? ? """ ? ? snrr的五個范圍為[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五個snrr范圍計算對應redchi的箱圖 ? ? :param df:包含snrr以及redchi的csv數據(dataFrame)。 ? ? :return: ? ? """ ?? ?# 根據snrr范圍對redchi進行篩選。 ? ? df1 = df.loc[df['lam_snrr'] >= 5] ? ? redchi_1 = df1.loc[df1['lam_snrr'] < 10].redchi ? ? df2 = df.loc[df['lam_snrr'] >= 10] ? ? redchi_2 = df2.loc[df2['lam_snrr'] < 15].redchi ? ? df3 = df.loc[df['lam_snrr'] >= 15] ? ? redchi_3 = df3.loc[df3['lam_snrr'] < 20].redchi ? ? df4 = df.loc[df['lam_snrr'] >= 20] ? ? redchi_4 = df4.loc[df4['lam_snrr'] < 30].redchi ? ? redchi_5 = df.loc[df['lam_snrr'] >= 30].redchi ? ? # 繪圖 ? ? ax = plt.subplot() ? ? ax.boxplot([redchi_1, redchi_2, redchi_3, redchi_4, redchi_5]) ? ? # 設置軸坐標值刻度的標簽 ? ? ax.set_xticklabels(['5<=snrr<10', '10<=snrr<15', '15<=snrr<20', '20<=snrr<30', '30<=snrr'], fontsize=8) ?? ?#?? ?保存圖片? ? ? plt.savefig('./images/box.jpg') ? ? plt.show() if __name__ == '__main__': ? ? df = pd.read_csv('./inputfile/lamost6w_new.csv') ? ? df_sc = screening(df) ?# 篩選數據 (lamost數據應該在正常值范圍內,不然因為數值差過大會導致繪制不出圖像!) ? ? plt_box_iamge(df_sc)
常用方法
import matplotlib.pyplot as plt import numpy as np np.random.seed(100) data = np.random.normal(size=(1000,4),loc=0,scale=1) ax = plt.subplot() ax.boxplot(data) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 繪圖 ax.set_xlim([0,5]) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設置x軸值的范圍 ?rotation=30 # ax.set_xticks() ??? ??? ??? ??? ??? ??? ??? ? ? ? ?# 自定義x軸的值 ax.set_xlabel("xlabel") ? ? ? ? ? ? ? ? ?# 設置x軸的標簽 ax.set_xticklabels(['A','B','C','D'], ?rotation=30,fontsize=10) ? # 設置x軸坐標值的標簽 旋轉角度 字體大小 ax.set_title("xcy") ? ? ? ?? ??? ??? ??? ??? ? ?# 設置圖像標題 ax.legend(labels= ['A','B','C','D'],loc='best',) ?# 增加圖例 ax.text(x=0.2 , y=3.5 , s="test" ,fontsize=12) ? # 增加注 plt.show()
總結?
原文鏈接:https://blog.csdn.net/XQC_KKK/article/details/123552522
相關推薦
- 2022-06-16 Python基礎之函數與控制語句_python
- 2022-10-03 docker修改容器的端口、容器名、映射地址以及注意事項_docker
- 2022-09-25 spring如何解決循環依賴
- 2023-03-02 docker-compose安裝RabbitMQ及插件操作步驟_docker
- 2022-04-05 ORA-01779: 無法修改與非鍵值保存表對應的列
- 2021-12-03 Go并發編程中sync/errGroup的使用_Golang
- 2023-04-06 C語言中單鏈表的基本操作(創建、銷毀、增刪查改等)_C 語言
- 2022-09-14 Python定制類你不知道的魔術方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支