# Python怎么調用Matplotlib繪制振動圖、箱型圖和提琴圖
## 一、前言
Matplotlib是Python生態中最著名的數據可視化庫之一,它提供了豐富的繪圖功能,能夠滿足科研、工程和商業分析中的多種可視化需求。本文將詳細介紹如何使用Matplotlib繪制三種常見但各具特色的統計圖表:**振動圖(Swarm Plot)**、**箱型圖(Box Plot)**和**提琴圖(Violin Plot)**,并通過完整代碼示例展示它們的應用場景和定制方法。
---
## 二、環境準備
在開始之前,請確保已安裝以下庫:
```python
pip install matplotlib numpy seaborn
注意:雖然振動圖可通過純Matplotlib實現,但結合Seaborn庫能顯著簡化代碼
振動圖是一種展示分類數據分布的圖表,它將所有數據點沿分類軸”振動”排列,避免重疊的同時保持原始數據位置。
使用seaborn.swarmplot()
是最簡便的方式:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 生成示例數據
np.random.seed(42)
data = np.random.normal(size=100)
categories = np.random.choice(['A', 'B', 'C'], 100)
# 繪制振動圖
plt.figure(figsize=(8,6))
sns.swarmplot(x=categories, y=data, palette="viridis")
plt.title("Basic Swarm Plot")
plt.show()
plt.figure(figsize=(10,6))
ax = sns.swarmplot(
x="day", y="total_bill", hue="sex",
data=sns.load_dataset("tips"),
dodge=True, # 分組是否分開顯示
size=6, # 點大小
edgecolor='black', # 邊緣顏色
linewidth=1 # 邊緣線寬
)
ax.legend(title="Gender")
plt.title("Advanced Swarm Plot with Grouping")
plt.show()
箱型圖通過五個關鍵統計量展示數據分布: - 下邊緣:Q1 - 1.5*IQR - 箱體下沿:第一四分位數(Q1) - 箱體中線:中位數 - 箱體上沿:第三四分位數(Q3) - 上邊緣:Q3 + 1.5*IQR
# 生成正態分布數據
data = [np.random.normal(0, std, 100) for std in range(1,4)]
plt.figure(figsize=(8,6))
plt.boxplot(data, patch_artist=True)
plt.xticks([1,2,3], ['Group1', 'Group2', 'Group3'])
plt.title("Basic Box Plot")
plt.show()
# 使用seaborn簡化分組操作
plt.figure(figsize=(10,6))
sns.boxplot(
x="day", y="total_bill", hue="sex",
data=sns.load_dataset("tips"),
palette="Set2",
linewidth=2.5,
width=0.8
)
plt.title("Grouped Box Plot with Seaborn")
plt.show()
提琴圖結合了箱型圖和核密度估計的優點,能更直觀展示數據分布形狀。
plt.figure(figsize=(8,6))
sns.violinplot(
x="day", y="total_bill",
data=sns.load_dataset("tips"),
inner="quartile" # 顯示四分位線
)
plt.title("Basic Violin Plot")
plt.show()
plt.figure(figsize=(10,6))
ax = sns.violinplot(
x="day", y="total_bill", hue="sex",
data=sns.load_dataset("tips"),
split=True, # 對比顯示分組
inner="stick",
palette="pastel",
scale="count" # 按樣本量調整寬度
)
ax.legend(title="Gender")
plt.title("Split Violin Plot with Count Scaling")
plt.show()
圖表類型 | 最佳使用場景 | 優缺點 |
---|---|---|
振動圖 | 小樣本數據分布展示 | 顯示所有數據點但可能重疊 |
箱型圖 | 快速比較統計量 | 隱藏數據細節但高效 |
提琴圖 | 展示分布形狀 | 計算復雜但信息豐富 |
plt.figure(figsize=(12,6))
sns.violinplot(x="day", y="total_bill", data=tips, color=".8")
sns.swarmplot(x="day", y="total_bill", data=tips, size=3)
plt.title("Violin + Swarm Plot Combination")
plt.show()
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows系統
plt.rcParams['axes.unicode_minus'] = False
alpha
參數bw
參數減少計算量plt.savefig('output.png', dpi=300, bbox_inches='tight')
本文詳細介紹了三種重要統計圖表的繪制方法: 1. 振動圖適合展示原始數據分布 2. 箱型圖側重統計量比較 3. 提琴圖揭示概率密度特征
通過Matplotlib和Seaborn的組合使用,我們可以輕松創建專業級的統計可視化圖表。建議讀者根據具體需求選擇合適的圖表類型,并靈活運用文中介紹的定制技巧。
擴展閱讀:可進一步研究
catplot()
函數實現更復雜的分面可視化 “`
注:本文實際字數約2800字,完整代碼示例已包含主要功能實現。如需擴展具體章節內容,可增加更多實際案例或參數組合說明。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。