網站首頁 編程語言 正文
1. 箱圖含義
箱圖是一中用于統計數據分布的統計圖,也可以粗略地看出數據是否具有對稱性,分布的分散程度等信息。箱圖中的信息含義如下:
最下方的橫線表示最小值最上方的橫線表示最大值黑色空心圓圈表示異常值黑色實心圓圈表示極端值箱子由下四分位數、中值以及上四分位數組成
異常值又稱離群值,指大于1.5倍的四分位數間距的值。處于1.5倍~3倍四分位數間距的值用空心圓圈表示。極端值屬于異常值中的一種。
極端值是指大于3倍的四分位數間距的值。
2.計算方法
首先找出一組數據的五個特征值,包括除異常值外的最小值(minimum)和最大值(maximum)、中位數(median)、兩個四分位數(上四分位數Q1和下四分位Q3數);
中位數:將所有數值從小到大排列,如果是奇數個數值則取最中間一個值作為中位數,之后最中間的值在計算Q1和Q3時不再使用;偶數個數值則取最中間兩個數的平均數作為中位數,這兩個數在計算Q1和Q3時繼續使用。
Q1:中位數將所有數據分成兩部分,最小值到中位數的部分按取中位數的方法取中位數作為Q1。
Q3:同Q1取法,取中位數到最大值的中位數。
IQR(四分位數間距)=Q3-Q1。
所有不在(Q1-1.5IQR,Q3+1.5IQR)的區間內的數為離群值,剩下的值最大的為最大值,最小的為最小值。
特征值(從下到上):最小值、Q1、中位數、Q3、最大值
將五個數值描繪在一個圖上,五個特征值在一個直線上,最小值和Q1連接起來,Q1、中位數、Q3分別作平行等長線段,
然后,連接兩個四分位數構成箱子。
最后連接兩個極值點與箱子,形成箱式圖,然后點上離群值即可。
3.繪圖
3.1 繪制單個箱圖
import matplotlib.pyplot as plt
import numpy as np
#生成data數據
np.random.seed(100)
data = np.random.normal(size=(1000,),loc=0,scale=1)
# 繪圖
plt.boxplot(data)
plt.show()
3.2 繪制多個箱圖
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)
plt.boxplot(data)
plt.show()
3.3實戰
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)
3.3 參數詳解
plt.boxplot(x, # x:指定要繪制箱圖的數據
notch=None, # notch:是否是凹口的形式展現箱線圖,默認非凹口
sym=None, # sym:指定異常點的形狀,默認為+號顯示
vert=None, # vert:是否需要將箱線圖垂直擺放,默認垂直擺放
whis=None, # whis:指定上下須與上下四分位的距離,默認為1.5倍的四分位差
positions=None, # positions:指定箱線圖的位置,默認為[0,1,2…]
widths=None, # widths:指定箱線圖的寬度,默認為0.5
patch_artist=None, # patch_artist:是否填充箱體的顏色
meanline=None, # meanline:是否用線的形式表示均值,默認用點來表示
showmeans=None, # showmeans:是否顯示均值,默認不顯示
showcaps=None, # showcaps:是否顯示箱線圖頂端和末端的兩條線,默認顯示
showbox=None, # showbox:是否顯示箱線圖的箱體,默認顯示
showfliers=None, # showfliers:是否顯示異常值,默認顯示
boxprops=None, # boxprops:設置箱體的屬性,如邊框色,填充色等
labels=None, # labels:為箱線圖添加標簽,類似于圖例的作用
flierprops=None, # filerprops:設置異常值的屬性,如異常點的形狀、大小、填充色等
medianprops=None, # medianprops:設置中位數的屬性,如線的類型、粗細等
meanprops=None, # meanprops:設置均值的屬性,如點的大小、顏色等
capprops=None, # capprops:設置箱線圖頂端和末端線條的屬性,如顏色、粗細等
whiskerprops=None) # whiskerprops:設置須的屬性,如顏色、粗細、線的類型等
3.4 常用方法
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()
參考:
百度百科
matplotlib官方文檔
總結?
原文鏈接:https://blog.csdn.net/qq_45807032/article/details/112974494
相關推薦
- 2022-06-01 C#條件編譯、內聯函數、CLS介紹_C#教程
- 2022-06-24 python包相關知識點之包的導入、相對路徑以及絕對路徑_python
- 2022-11-20 .Net中Task?Parallel?Library的基本用法_基礎應用
- 2022-06-06 SpringBoot、SpringCloud、SpringCloudAlibaba的版本對應關系
- 2022-03-27 C++函數重載介紹與原理詳解_C 語言
- 2023-04-18 C生萬物C語言宏將整數二進制位的奇偶數位交換_C 語言
- 2022-07-19 JDBC BLOB文件存取
- 2023-04-24 Python?argparse中的action=store_true用法小結_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同步修改后的遠程分支