Matplotlib创建图表的2种方式(附带实例)
Matplotlib 为创建图表提供了两种编程方式,分别是函数和面向对象。无论使用哪种方式,都可以创建所需的图表,两种方式各有优缺点。
在实际编程任务中,经常结合使用函数和面向对象两种方式来创建图表,充分发挥两种编程方式各自的优点,从而简化代码的编写,同时也能使创建图表的整个过程逻辑清晰,并可对图表的细节具有灵活的控制能力。
使用 pyplot 模块中的函数创建图表时,只需为这些函数提供一些参数即可,用户无须显式创建 Figure 和 Axes 等对象,Matplotlib 会在幕后自动创建它们。

图 1 使用函数方式创建图表
下面的示例使用函数方式创建上图所示的图表,其中使用了以下几个函数:
pyplot 模块中的绘图函数通常接受 Ndarray 类型的数据,Ndarray 是 NumPy 库的核心对象。此外,Python 中的序列对象和可迭代对象也可作为这些函数的参数,本例传递给 plot 函数的参数是由 Python 中的 Range 函数创建的可迭代对象。
使用面向对象方式创建图表时,Figure 对象通常使用函数方式来创建,即 pyplot 模块中的 figure 函数,这是创建 Figure 对象的快捷方法。
下面的示例是创建图 1 所示的图表,此处使用的是面向对象编程方式。
在实际编程任务中,经常结合使用函数和面向对象两种方式来创建图表,充分发挥两种编程方式各自的优点,从而简化代码的编写,同时也能使创建图表的整个过程逻辑清晰,并可对图表的细节具有灵活的控制能力。
Matplotlib用函数创建图表
在 Matplotlib 库中有一个 pyplot 模块,该模块提供了大量的函数,使用这些函数可以创建不同类型的图表,并对图表元素进行详细设置。使用 pyplot 模块中的函数创建图表时,只需为这些函数提供一些参数即可,用户无须显式创建 Figure 和 Axes 等对象,Matplotlib 会在幕后自动创建它们。

图 1 使用函数方式创建图表
下面的示例使用函数方式创建上图所示的图表,其中使用了以下几个函数:
- figure:创建一个图形;
- plot:绘制折线图;
- xlabel:设置 x 轴标题;
- ylabel:设置 y 轴标题;
- title:设置图表标题;
- legend:添加图例;
- show:在窗口中显示图表。
import matplotlib.pyplot as plt x = range(1, 7) plt.figure() plt.plot(x, x, label='linear') plt.xlabel('x Axis') plt.ylabel('y Axis') plt.title("Plot Test") plt.legend() plt.show()导入 pyplot 模块时,虽然可以使用任何名称作为其别名,但是通常将其别名设置为 plt,这是一种便于 Python 程序员交流的命名惯例。
pyplot 模块中的绘图函数通常接受 Ndarray 类型的数据,Ndarray 是 NumPy 库的核心对象。此外,Python 中的序列对象和可迭代对象也可作为这些函数的参数,本例传递给 plot 函数的参数是由 Python 中的 Range 函数创建的可迭代对象。
Matplotlib用面向对象方式创建图表
在 Matplotlib 中操作的任何东西都是对象,例如 Figure、Axes 和 Axis 等。使用面向对象方式创建图表时,Figure 对象通常使用函数方式来创建,即 pyplot 模块中的 figure 函数,这是创建 Figure 对象的快捷方法。
下面的示例是创建图 1 所示的图表,此处使用的是面向对象编程方式。
import matplotlib.pyplot as plt x = range(1, 7) fig, ax = plt.subplots() ax.plot(x, x, label='linear') ax.set_xlabel('x Axis') ax.set_ylabel('y Axis') ax.set_title('Plot Test') ax.legend() fig.show()函数和面向对象两种编程方式的主要区别:
- 在函数式编程中,每行代码几乎都以 plt 开头,绘制图表并设置图表元素的操作使用的都是 pyplot 模块中的函数。在窗口中显示图表时,使用的是 pyplot 模块中的 show 函数。
- 在面向对象式编程中,需要显式创建 Figure 和 Axes 等对象,绘制图表并设置图表元素使用的是 Axes 对象的方法。在窗口中显示图表时,使用的是 Figure 对象的 show 方法。