命令式與物件導向的語法

Matplotlib 支援用於繪圖的物件導向和命令式語法。命令式語法有意設計為非常接近 Matlab 語法。

命令式語法(有時稱為狀態機語法)發出一串命令,所有這些命令都作用於最新的圖形或軸(如 Matlab)。另一方面,物件導向的語法明確地作用於感興趣的物件(圖形,軸等)。 Python禪宗中的一個關鍵點是顯式優於隱式,因此物件導向的語法更加 pythonic。但是,命令式語法對於 Matlab 的新轉換和編寫小型一次性繪圖指令碼非常方便。以下是兩種不同風格的示例。

import matplotlib.pyplot as 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)

兩個例子都產生了相同的圖,如下所示。

StackOverflow 文件