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

相关推荐
Jaxson Lin2 小时前
Java编程进阶:智能仿真无人机项目4.0
java·开发语言·无人机
牵牛老人2 小时前
Qt中集成 MQTT 来实现物联网通信:从原理到实战全解析
开发语言·qt·物联网
micro_xx2 小时前
借助Matlab有限元工具pde进行静态结构有限元分析
开发语言·matlab
代码无bug抓狂人2 小时前
C语言之可分解的正整数(蓝桥杯省B)
c语言·开发语言·算法
Cher ~2 小时前
常见C++编译器套件
开发语言·c++
上海合宙LuatOS2 小时前
LuatOS ——Modbus RTU 通信模式
java·linux·服务器·开发语言·网络·嵌入式硬件·物联网
xyq20242 小时前
《jEasyUI 启用行内编辑》
开发语言
野生技术架构师2 小时前
Java 21虚拟线程 vs Kotlin协程:高并发编程模型的终极对决与选型思考
java·开发语言·kotlin
言之。2 小时前
Kotlin快速入门
android·开发语言·kotlin