鋒哥原創的Matplotlib3 Python數據可視化視頻教程:
2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili
課程介紹
本課程講解利用python進行數據可視化 科研繪圖-Matplotlib,學習Matplotlib圖形參數基本設置,繪圖參數及主要函數,以及Matplotlib基礎繪圖,和Matplotlib高級繪圖。
繪制箱線圖(Box)
箱線圖(Box Plot)是一種用于展示數據分布特征的統計圖表,能清晰顯示數據的中位數、四分位數、異常值等關鍵統計量。它特別適合比較多個數據集分布情況。 箱線圖組成要素:
-
箱體 (Box):
-
下邊界:第一四分位數 (Q1, 25%)
-
上邊界:第三四分位數 (Q3, 75%)
-
箱內橫線:中位數 (Q2, 50%)
-
-
須 (Whiskers):
-
上限:Q3 + 1.5×IQR
-
下限:Q1 - 1.5×IQR
-
IQR = Q3 - Q1(四分位距)
-
-
異常值 (Outliers):
-
超出上下須范圍的數據點
-
plt.boxplot()
是 Matplotlib 中用于繪制箱線圖的核心函數,用于展示數據的分布特征(如中位數、四分位數、異常值等)。以下是詳細解析:
plt.boxplot(x, ? ? ? ? ? ? ? ? ? ? ? ? # 輸入數據(數組或序列的序列)notch=None, ? ? ? ? ? ? ? ?# 是否繪制缺口箱線圖(顯示中位數置信區間)sym=None, ? ? ? ? ? ? ? ? ?# 異常值的標記符號vert=None, ? ? ? ? ? ? ? ? # 是否垂直放置(True為垂直,False為水平)whis=None, ? ? ? ? ? ? ? ? # 定義須的位置(默認1.5倍IQR)positions=None, ? ? ? ? ? ?# 箱線圖的位置widths=None, ? ? ? ? ? ? ? # 箱體的寬度patch_artist=None, ? ? ? ? # 是否填充箱體顏色bootstrap=None, ? ? ? ? ? ?# 缺口箱線圖的置信區間計算方法usermedians=None, ? ? ? ? ?# 用戶指定的中位數conf_intervals=None, ? ? ? # 用戶指定的置信區間meanline=False, ? ? ? ? ? ?# 是否用線表示均值showmeans=False, ? ? ? ? ? # 是否顯示均值showcaps=True, ? ? ? ? ? ? # 是否顯示箱線圖頂端的橫線showbox=True, ? ? ? ? ? ? ?# 是否顯示箱體showfliers=True, ? ? ? ? ? # 是否顯示異常值boxprops=None, ? ? ? ? ? ? # 箱體屬性whiskerprops=None, ? ? ? ? # 須的屬性capprops=None, ? ? ? ? ? ? # 頂端橫線的屬性medianprops=None, ? ? ? ? ?# 中位線屬性meanprops=None, ? ? ? ? ? ?# 均值屬性flierprops=None, ? ? ? ? ? # 異常值屬性manage_ticks=True, ? ? ? ? # 是否自動管理刻度autorange=False, ? ? ? ? ? # 是否自動調整范圍zorder=None ? ? ? ? ? ? ? ?# 繪圖順序
)
三、核心參數詳解
-
數據輸入 (
x
)
-
一維數組:單組數據
-
列表的列表/數組的數組:多組數據(每組數據繪制一個箱體)
-
字典:鍵為標簽,值為數據
-
箱體樣式控制
-
notch:是否繪制缺口箱線圖(顯示中位數置信區間)
-
patch_artist:True時可用
boxprops
填充顏色 -
widths:箱體寬度(默認0.5)
-
異常值處理
-
showfliers:是否顯示異常值
-
sym:異常值標記符號(默認'o')
-
whis:須的長度(默認1.5,可設為[5,95]表示百分位數)
-
統計量顯示
-
showmeans:顯示均值(默認False)
-
meanline:True時用橫線表示均值,False時用點表示
-
樣式屬性
-
boxprops:箱體屬性(如
dict(color='red', facecolor='blue')
) -
whiskerprops:須的屬性(如
dict(linestyle='--', color='green')
) -
medianprops:中位線屬性(如
dict(color='black', linewidth=2)
) -
flierprops:異常值屬性(如
dict(marker='x', markersize=8)
)
我們來看一個示例:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
?
# 設置matplotlib使用黑體顯示中文
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'
?
# 創建示例數據
np.random.seed(42)
data = [np.random.normal(0, std, 100) for std in range(1, 5)]
# 創建箱線圖
plt.figure(figsize=(10, 6))
?
# 繪制箱線圖
box = plt.boxplot(data,vert=True, ?# 垂直方向patch_artist=True, ?# 填充顏色tick_labels=['組1', '組2', '組3', '組4'])
?
# 設置箱子顏色
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
for patch, color in zip(box['boxes'], colors):patch.set_facecolor(color)patch.set_alpha(0.7) ?# 設置透明度
?
# 設置須線和異常點樣式
plt.setp(box['whiskers'], color='red', linestyle='-') ?# 箱線圖的“須”部分,即從箱子延伸出去的兩條線(上須和下須),表示數據的范圍(通常是1.5倍IQR內的數據)。
plt.setp(box['caps'], color='yellow') ?# 箱線圖須線末端的橫線,稱為“帽”。每個須有兩個帽(上須的上帽和下須的下帽)。
plt.setp(box['fliers'], marker='o', markersize=8,markerfacecolor='none', markeredgecolor='blue') ?# 箱線圖中的異常值點,即超出1.5倍IQR范圍的數據點。
plt.setp(box['medians'], color='gray', linewidth=2) ?# 箱線圖中的中位數線,即箱子中間的橫線。
?
# 添加標題和標簽
plt.title('基本箱形圖示例', fontsize=14)
plt.xlabel('數據組', fontsize=12)
plt.ylabel('值', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
?
plt.tight_layout()
plt.show()