matplotlib 命令式与面向对象的语法

示例

Matplotlib支持绘图的面向对象和命令式语法。命令式语法被故意设计为非常类似于Matlab语法。

命令式语法(有时称为“状态机”语法)发出一串命令,所有命令都作用于最新图形或轴(如Matlab)。另一方面,面向对象的语法显式作用于感兴趣的对象(图,轴等)。Python禅宗中的一个关键点指出,显式要比隐式好,因此面向对象的语法更具pythonic性。但是,命令式语法对于从Matlab进行的新转换以及编写小的“丢弃”绘图脚本很方便。下面是两种不同样式的示例。

importmatplotlib.pyplotas plt
import numpy as np

t = np.arange(0, 2, 0.01)
y = np.sin(4 *np.pi* t)

# Imperative syntax
plt.figure(1)
plt.clf()
plt.plot(t, y)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.title('Sine Wave')
plt.grid(True)

# Object oriented syntax
fig = plt.figure(2)
fig.clf()
ax = fig.add_subplot(1,1,1)
ax.plot(t, y)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude (V)')
ax.set_title('Sine Wave')
ax.grid(True)

两个示例都产生相同的图,如下所示。