Matplotlib物件導向介面


雖然使用matplotlib.pyplot模組很容易快速生成繪圖,但建議使用物件導向的方法,因為它可以更好地控制和自定義繪圖。matplotlib.axes.Axes類中也提供了大多數函式。

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

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

首先,建立一個提供空畫布的圖形範例。

fig = plt.figure()

將軸新增到圖形中。add_axes()方法需要一個4個元素的列表物件,對應於圖形的左側,底部,寬度和高度。每個數位必須介於01之間 -

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

設定xy軸的標籤以及標題 -

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

呼叫axes物件的plot()方法。

ax.plot(x,y)

如果使用的是Jupyter notebook,則需要加入%matplotlib inline指令; pyplot模組的show()函式顯示圖形。

閱讀並執行以下程式碼 -

#! /usr/bin/env python
#coding=utf-8

from matplotlib import pyplot as plt
import numpy as np
import math
# 顯示中文設定...
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字型)
plt.rcParams['axes.unicode_minus'] = False   # 步驟二(解決坐標軸負數的負號顯示問題)
%matplotlib inline
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("正弦波")
ax.set_xlabel('角度')
ax.set_ylabel('正弦')
plt.show()

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

Jupyter notebook中執行時相同的程式碼 -

#! /usr/bin/env python
#coding=utf-8

from matplotlib import pyplot as plt
import numpy as np
import math
# 顯示中文設定...
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字型)
plt.rcParams['axes.unicode_minus'] = False   # 步驟二(解決坐標軸負數的負號顯示問題)
%matplotlib inline
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("正弦波")
ax.set_xlabel('角度')
ax.set_ylabel('正弦')
plt.show()

顯示輸出如下所示 -