Matplotlib 通过plt.subplots()
函数创建多个子图
Matplotlib是Python中常用的数据可视化工具,通过Matplotlib我们可以绘制出各种图形,来帮助我们更好地理解数据。在Matplotlib中,经常会使用到子图,特别是具有共享x轴的子图。本篇文章将介绍如何合并Matplotlib的子图,同时使它们共享x轴。
阅读更多:Matplotlib 教程
创建多个子图
在Matplotlib中,可以通过plt.subplots()
函数来创建多个子图。下面的示例代码将创建两个子图,一个子图包含在x轴方向上分布均匀的随机数,另一个子图包含在x轴方向上分布均匀的正弦函数,两个子图共享x轴。
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.random.rand(100)
y2 = np.sin(x)
# 创建两个子图
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
# 绘制第一个子图
ax1.plot(x, y1, 'ro')
ax1.set_ylabel('Random Numbers')
# 绘制第二个子图
ax2.plot(x, y2, 'b--')
ax2.set_xlabel('X')
ax2.set_ylabel('Sine Function')
# 添加标题
plt.suptitle('Subplots with Shared X-axis')
# 显示图形
plt.show()
上述示例代码中,我们首先使用Numpy库生成了x轴方向上分布均匀的随机数和正弦函数,然后通过plt.subplots()
函数创建了两个子图,且将它们设置了共享x轴。接着,我们通过ax1.plot()
和ax2.plot()
函数分别绘制了两个子图,并对它们进行了一些调整,最后通过plt.show()
函数显示图形。
合并多个子图
有时候,我们需要将多个子图合并为一个大图,以便更好地呈现数据。在Matplotlib中,可使用plt.subplots()
函数创建一个大图,然后将多个子图添加到大图中。下面的示例代码将创建一个包含两个子图的大图,并将它们合并到一起。
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.random.rand(100)
y2 = np.sin(x)
y3 = np.cos(x)
# 创建大图
fig, big_ax = plt.subplots(figsize=(10, 6))
# 添加标题
big_ax.set_title('Merged Subplots with Shared X-axis')
# 删除x轴标签和tick
big_ax.set_xlabel('')
big_ax.set_xticks([])
# 添加x轴标签和tick
big_ax.set_ylabel('Random Numbers')
big_ax.tick_params(axis='y', labelsize=8)
# 创建子图1
ax1 = fig.add_subplot(3, 1, 1, sharex=big_ax)
ax1.plot(x, y1, 'ro')
ax1.set_ylabel('Random Numbers')
ax1.tick_params(axis='y', labelsize=8)
# 创建子图2
ax2 = fig.add_subplot(3, 1, 2, sharex=big_ax)
ax2.plot(x, y2, 'b--')
ax2.set_ylabel('Sine Function')
ax2.tick_params(axis='y', labelsize=8)
# 创建子图3
ax3 = fig.add_subplot(3, 1, 3, sharex=big_ax)
ax3.plot(x, y3, 'g-.')
ax3.set_xlabel('X')
ax3.set_ylabel('Cosine Function')
ax3.tick_params(axis='both', labelsize=8)
# 调整子图的间距
fig.subplots_adjust(hspace=0)
# 显示图形
plt.show()
在示例代码中,我们首先使用Numpy库生成了三个数据,其中第一个子图包含随机数,第二个子图包含正弦函数,第三个子图包含余弦函数。然后我们通过plt.subplots()
函数创建了一个大图,并将它的大小设置为10*6。接着,我们设置大图的标题、x轴标签、y轴标签和tick,然后创建了三个子图并设置共享x轴,并将它们添加到大图中。最后,我们通过fig.subplots_adjust()
函数调整了子图的间距,并使用plt.show()
函数显示图形。
总结
在Matplotlib中,我们可以通过plt.subplots()
函数创建多个子图,而共享x轴可以更好地显示相关的数据信息。另外,我们还可以通过添加子图的方式将多个子图合并成一个大图,以便更好地呈现数据。通过这篇文章的介绍,相信大家对Matplotlib的子图合并已经有了更深刻的认识。