Matplotlib 绘制多图

Matplotlib 绘制多图

引言

Matplotlib 是一个功能强大的 Python 绘图库,它允许用户轻松地创建各种图表和图形。在数据分析、科学研究和工程领域,Matplotlib 都有着广泛的应用。本文将详细介绍如何使用 Matplotlib 绘制多图,包括子图、堆叠图和分组图等。

子图

子图(Subplots)是 Matplotlib 中最常用的绘制多图的方法之一。它允许用户在一个图上绘制多个独立的图表,每个图表称为一个子图。

创建子图

要创建一个子图,可以使用 plt.subplots() 函数。以下是一个简单的示例:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建子图
fig, ax = plt.subplots(2, 1)

# 绘制第一个子图
ax[0].plot(x, y1)
ax[0].set_title('Sine Wave')

# 绘制第二个子图
ax[1].plot(x, y2)
ax[1].set_title('Cosine Wave')

# 显示图形
plt.show()

在上面的代码中,我们创建了一个包含两个子图的图形。第一个子图绘制了正弦波,第二个子图绘制了余弦波。

调整子图布局

有时候,我们需要调整子图的布局,以便更好地展示图表。可以使用 subplots_adjust() 函数来调整子图之间的间距。

python 复制代码
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1)
ax[0].set_title('Sine Wave')
ax[1].plot(x, y2)
ax[1].set_title('Cosine Wave')

# 调整子图布局
plt.subplots_adjust(hspace=0.5)

plt.show()

在上面的代码中,我们设置了子图之间的垂直间距为 0.5。

堆叠图

堆叠图(Stacked Plot)是一种将多个数据系列叠加在一起的图表。这种图表常用于展示不同类别之间的比较。

创建堆叠图

以下是一个创建堆叠图的示例:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.arange(10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)

# 创建堆叠图
ax = plt.subplot(111)
ax.bar(x, y1, label='Series 1')
ax.bar(x, y2, bottom=y1, label='Series 2')

# 添加图例
ax.legend()

# 显示图形
plt.show()

在上面的代码中,我们创建了一个堆叠图,其中包含两个数据系列。第一个数据系列位于底部,第二个数据系列叠加在第一个数据系列之上。

分组图

分组图(Grouped Plot)是一种将多个数据系列并排放置的图表。这种图表常用于展示不同类别之间的比较。

创建分组图

以下是一个创建分组图的示例:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.arange(10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)

# 创建分组图
ax = plt.subplot(111)
ax.bar(x, y1, label='Series 1')
ax.bar(x + 0.4, y2, label='Series 2')

# 添加图例
ax.legend()

# 显示图形
plt.show()

在上面的代码中,我们创建了一个分组图,其中包含两个数据系列。为了使两个数据系列并排放置,我们将第二个数据系列的 x 坐标向右移动了 0.4 个单位。

总结

本文介绍了 Matplotlib 中绘制多图的方法,包括子图、堆叠图和分组图。通过这些方法,用户可以轻松地创建各种图表和图形,以便更好地展示数据和分析结果。希望本文对您有所帮助。

相关推荐
moonsims18 分钟前
星闪在跨域无人化系统作用
开发语言·php
Iruoyaoxh1 小时前
栈和队列~
java·开发语言
Hrain-AI1 小时前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
wdfk_prog2 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort1232 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer2 小时前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图
mct1232 小时前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
Marst Code4 小时前
Python 3.9 已停止维护!从 3.9 到 3.14 全版本深度对比,生产环境该选哪个?
开发语言·python
ZJH__GO4 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
万岳科技系统开发5 小时前
智慧医院小程序开发推动医疗服务流程全面线上化
大数据·开发语言·人工智能