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

相关推荐
阿狗童鞋3 小时前
Python爬虫进阶实战指南
开发语言·爬虫·python
下页、再停留3 小时前
【C#桌面客户端系列学习-7】数据查询展示
开发语言·c#·visual studio
皓月盈江3 小时前
Go读写TXT文件
开发语言·后端·golang·go·读写txt文件·bufio·go读写txt
qq_401700413 小时前
Qt Signal Mapper:一堆按钮,怎么共用一个槽函数
开发语言·qt
蜗牛互联网4 小时前
Java HttpClient 调用 Gemini 图像理解与金额字段校验
java·开发语言·人工智能·后端·python
蜗牛互联网4 小时前
Python Responses API视觉输入与本地金额校验最小实现
java·开发语言·人工智能·后端·python
czq_26867194874 小时前
Python打卡第34天
开发语言·python·机器学习
小黄人软件4 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
半亩码田5 小时前
C#转Python第4.7篇:logging:Python 的标准日志库
开发语言·python·c#
程序员老陆5 小时前
从汇编层面理解 C++ 多线程
开发语言·c++·程序设计