如何使用Matplotlib创建超过10个子图的图形?
当需要展示较多的数据时,我们通常需要创建一个包含多个子图的大图。然而在Matplotlib中,创建超过10个子图的图形并不是一件容易的事情。本文将介绍如何使用Matplotlib创建超过10个子图的图形。
方法1:使用plt.subplots()
Matplotlib的plt.subplots()
函数可以创建包含一个或多个子图的图形。其中,plt.subplots(nrows, ncols)
创建一个包含nrows*ncols
个子图的图形,并返回它们的Figure对象和Axes对象的NumPy数组。因此,我们可以使用循环来访问这些Axes对象。
下面的示例展示了如何创建20个子图,并在它们中绘制随机的正态分布曲线:
import matplotlib.pyplot as plt
import numpy as np
# 创建20个子图
fig, axes = plt.subplots(nrows=5, ncols=4, figsize=(12, 9))
# 展开Axes对象的NumPy数组并遍历
for ax in axes.flatten():
# 绘制随机的正态分布曲线
x = np.arange(-5, 5, 0.1)
y = np.random.normal(size=x.size)
ax.plot(x, y)
# 隐藏坐标轴标签
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
# 显示图形
plt.show()
上述代码创建了一个大小为12×9英寸的Figure对象,并包含了5行4列共20个子图。使用axes.flatten()
方法展开Axes对象的NumPy数组,并使用循环遍历每个子图。在每个子图中,我们绘制了一个随机的正态分布曲线,并隐藏了坐标轴标签。
方法2:使用fig.add_subplot()
另一种创建子图的方法是使用Figure对象的fig.add_subplot()
方法。该方法在指定的位置上创建一个子图,并返回对应的Axes对象。因此,我们可以使用循环来创建多个子图,并访问它们的Axes对象。
下面的示例展示了如何创建20个子图,并在它们中绘制随机的正态分布曲线:
import matplotlib.pyplot as plt
import numpy as np
# 创建Figure对象
fig = plt.figure(figsize=(12, 9))
# 创建20个子图
for i in range(1, 21):
ax = fig.add_subplot(5, 4, i)
# 绘制随机的正态分布曲线
x = np.arange(-5, 5, 0.1)
y = np.random.normal(size=x.size)
ax.plot(x, y)
# 隐藏坐标轴标签
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
# 显示图形
plt.show()
上述代码创建了一个大小为12×9英寸的Figure对象,并在其上创建了20个子图。我们使用循环遍历了每个子图,并在其中绘制了一个随机的正态分布曲线,并隐藏了坐标轴标签。
结论
本文介绍了如何使用Matplotlib创建超过10个子图的图形。我们使用了两种方法:使用plt.subplots()
和使用fig.add_subplot()
。两种方法都可以创建多个子图,并在其中绘制数据。在实际应用中,我们可以根据需求选择方法并灵活运用。