溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么調用Matplotlib繪制振動圖、箱型圖和提琴圖

發布時間:2021-12-02 15:45:00 來源:億速云 閱讀:291 作者:iii 欄目:開發技術
# Python怎么調用Matplotlib繪制振動圖、箱型圖和提琴圖

## 一、前言

Matplotlib是Python生態中最著名的數據可視化庫之一,它提供了豐富的繪圖功能,能夠滿足科研、工程和商業分析中的多種可視化需求。本文將詳細介紹如何使用Matplotlib繪制三種常見但各具特色的統計圖表:**振動圖(Swarm Plot)**、**箱型圖(Box Plot)**和**提琴圖(Violin Plot)**,并通過完整代碼示例展示它們的應用場景和定制方法。

---

## 二、環境準備

在開始之前,請確保已安裝以下庫:
```python
pip install matplotlib numpy seaborn

注意:雖然振動圖可通過純Matplotlib實現,但結合Seaborn庫能顯著簡化代碼


三、振動圖(Swarm Plot)繪制

3.1 基本概念

振動圖是一種展示分類數據分布的圖表,它將所有數據點沿分類軸”振動”排列,避免重疊的同時保持原始數據位置。

3.2 基礎繪制方法

使用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()

3.3 高級定制

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()

四、箱型圖(Box Plot)繪制

4.1 統計含義

箱型圖通過五個關鍵統計量展示數據分布: - 下邊緣:Q1 - 1.5*IQR - 箱體下沿:第一四分位數(Q1) - 箱體中線:中位數 - 箱體上沿:第三四分位數(Q3) - 上邊緣:Q3 + 1.5*IQR

4.2 單變量箱型圖

# 生成正態分布數據
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()

4.3 分組箱型圖

# 使用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()

五、提琴圖(Violin Plot)繪制

5.1 與箱型圖的區別

提琴圖結合了箱型圖和核密度估計的優點,能更直觀展示數據分布形狀。

5.2 基礎提琴圖

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()

5.3 高級應用

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()

六、三種圖表的對比與選擇

6.1 適用場景對比

圖表類型 最佳使用場景 優缺點
振動圖 小樣本數據分布展示 顯示所有數據點但可能重疊
箱型圖 快速比較統計量 隱藏數據細節但高效
提琴圖 展示分布形狀 計算復雜但信息豐富

6.2 組合使用示例

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()

七、常見問題解決方案

7.1 中文顯示問題

plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows系統
plt.rcParams['axes.unicode_minus'] = False

7.2 大數據量優化

  • 振動圖:考慮抽樣或使用alpha參數
  • 提琴圖:調整bw參數減少計算量

7.3 導出高質量圖片

plt.savefig('output.png', dpi=300, bbox_inches='tight')

八、總結

本文詳細介紹了三種重要統計圖表的繪制方法: 1. 振動圖適合展示原始數據分布 2. 箱型圖側重統計量比較 3. 提琴圖揭示概率密度特征

通過Matplotlib和Seaborn的組合使用,我們可以輕松創建專業級的統計可視化圖表。建議讀者根據具體需求選擇合適的圖表類型,并靈活運用文中介紹的定制技巧。

擴展閱讀:可進一步研究catplot()函數實現更復雜的分面可視化 “`

注:本文實際字數約2800字,完整代碼示例已包含主要功能實現。如需擴展具體章節內容,可增加更多實際案例或參數組合說明。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女