Matplotlib - 面向物件介面



雖然使用matplotlib.pyplot模組可以輕鬆快速地生成繪圖,但建議使用面向物件的方法,因為它可以更好地控制和自定義繪圖。大多數函式也可在matplotlib.axes.Axes類中找到。

使用更正式的面向物件方法的主要思想是建立圖形物件,然後僅呼叫該物件的方法或屬性。這種方法有助於更好地處理具有多個繪圖的畫布。

在面向物件介面中,Pyplot僅用於建立圖形等少數幾個功能,使用者顯式建立並跟蹤圖形和座標軸物件。在此級別,使用者使用Pyplot建立圖形,並透過這些圖形可以建立一或多個座標軸物件。然後,這些座標軸物件用於大多數繪圖操作。

首先,我們建立一個圖形例項,它提供一個空白畫布。

fig = plt.figure()

現在將座標軸新增到圖形中。add_axes()方法需要一個包含4個元素的列表物件,分別對應圖形的左、下、寬和高。每個數字必須介於0和1之間 -

ax=fig.add_axes([0,0,1,1])

設定x軸和y軸的標籤以及標題 -

ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')

呼叫座標軸物件的plot()方法。

ax.plot(x,y)

如果使用Jupyter notebook,則必須發出%matplotlib inline指令;否則,pyplot模組的show()函式將顯示繪圖。

考慮執行以下程式碼 -

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()

輸出

以上程式碼行生成以下輸出 -

Add Axes Method

在Jupyter notebook中執行相同的程式碼,顯示的輸出如下所示 -

Jupyter Notebook Output
廣告