Python怎么调用Matplotlib绘制振动图、箱型图和提琴图

发布时间:2021-12-02 15:45:00 作者:iii
来源:亿速云 阅读:279
# 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 大数据量优化

7.3 导出高质量图片

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

八、总结

本文详细介绍了三种重要统计图表的绘制方法: 1. 振动图适合展示原始数据分布 2. 箱型图侧重统计量比较 3. 提琴图揭示概率密度特征

通过Matplotlib和Seaborn的组合使用,我们可以轻松创建专业级的统计可视化图表。建议读者根据具体需求选择合适的图表类型,并灵活运用文中介绍的定制技巧。

扩展阅读:可进一步研究catplot()函数实现更复杂的分面可视化 “`

注:本文实际字数约2800字,完整代码示例已包含主要功能实现。如需扩展具体章节内容,可增加更多实际案例或参数组合说明。

推荐阅读:
  1. Python箱型图怎么绘制与特征值获取过程
  2. 怎么在python中调用matplotlib模块绘制柱状图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python matplotlib

上一篇:Fleet有什么功能

下一篇:tk.Mybatis插入数据获取Id怎么实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》