Python matplotlib画多图、子图
1. 介绍
在数据分析和可视化中,matplotlib是一个非常常用的Python库。它提供了丰富的绘图选项,可以绘制各种类型的图形,包括折线图、散点图、柱状图和饼图等。本文将详细介绍如何使用matplotlib库画多图和子图。
2. 导入matplotlib库
在使用matplotlib之前,我们首先需要导入它的库。通常我们使用pyplot
模块来绘制图形,并将其命名为plt
,代码如下:
import matplotlib.pyplot as plt
3. 画多图
有时候我们需要在同一张图中绘制多个子图,这时可以使用matplotlib的subplot()
函数。subplot()
函数接受三个参数:行数、列数和子图位置。下面是一个例子,绘制了一个包含2行2列的图表,并在每个子图中绘制了不同的函数曲线。
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title('Sine')
plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title('Cosine')
plt.subplot(2, 2, 3)
plt.plot(x, y3)
plt.title('Tangent')
plt.subplot(2, 2, 4)
plt.plot(x, y4)
plt.title('Exponential')
plt.tight_layout()
plt.show()
上述代码将会绘制一个包含4个子图的图表,每个子图分别显示不同的函数曲线。使用plt.subplot()
函数来指定每个子图在整个图表中的位置,然后使用plt.plot()
函数来绘制曲线,最后使用plt.title()
函数给每个子图添加一个标题。使用plt.tight_layout()
函数可以自动调整子图的位置,使它们更加紧凑。
4. 画子图
有时候我们需要在同一张图中绘制多个子图,并且每个子图的尺寸可能不同。这时可以使用matplotlib的subplots()
函数。subplots()
函数接受两个参数:行数和列数,并返回了一个包含子图对象的元组。下面是一个例子,绘制了一个包含2行2列的图表,并在每个子图中绘制了不同的函数曲线。
import numpy as np
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)
fig, axs = plt.subplots(2, 2, figsize=(8, 6))
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sine')
axs[0, 1].plot(x, y2)
axs[0, 1].set_title('Cosine')
axs[1, 0].plot(x, y3)
axs[1, 0].set_title('Tangent')
axs[1, 1].plot(x, y4)
axs[1, 1].set_title('Exponential')
plt.tight_layout()
plt.show()
上述代码使用plt.subplots()
函数创建了一个包含2行2列的图表,并将该图表的对象存储在fig
中,将包含子图的数组存储在axs
中。然后,我们可以使用类似于二维数组的方式访问每个子图,并使用plot()
函数绘制曲线,使用set_title()
函数添加标题。
5. 总结
本文介绍了如何使用matplotlib库画多图和子图。画多图可以使用subplot()
函数通过指定子图位置的方式实现,而画子图可以使用subplots()
函数通过创建多个子图对象的方式实现。这些功能使得我们可以在一个图中同时显示多个图形,更方便地进行数据可视化和分析。