[Python3] Matplotlib —— (二) 簡易線形圖


三、簡易線形圖

所有圖形中,最簡單的應該就是線性方程 y=f(x)y = f(x) 的可視化了。

  1. 要畫Matplotlib圖形時,需要先創建一個圖形fig和一個座標軸ax
  • figureplt.Figure類的一個實例)可以被看成是一個能夠容納各種座標軸、圖形、文字和標籤的容器
  • axesplt.Axes類的一個實例)是一個帶有刻度和標籤的矩形,最終會包含所有可視化的圖形元素
  • 通常會用變量fig表示一個圖形實例,用變量ax表示一個座標軸實例或一組座標軸實例
fig = plt.figure()
ax = plt.axes()

在這裏插入圖片描述
2. 創建好座標軸後,就可以用ax.plot畫圖了(也可以用pylab接口畫圖,這時圖形與座標軸都在底層執行)

fig = plt.figure()
ax = plt.axes()

x = np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x))

在這裏插入圖片描述

plt.plot(x, np.sin(x))

在這裏插入圖片描述
3. 如果想在一張圖中創建多條線,可以重複調用plot命令

plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))

在這裏插入圖片描述

(一)調整圖形:線條的顏色與風格

通常對圖形的第一次調整是調整它線條的顏色和風格,plt.plot()函數可以通過相應的參數設置。

  1. 修改顏色:使用color參數(如果不指定顏色,Matplotlib會爲多條線自動循環使用一組默認的顏色)
# 顏色設置
plt.plot(x, np.sin(x - 0), color='blue')    # 標準顏色名稱
plt.plot(x, np.sin(x - 1), color='g')    # 縮寫顏色代碼(rgbcmyk)
plt.plot(x, np.sin(x - 2), color='0.75')    # 範圍在0~1的灰度值
plt.plot(x, np.sin(x - 3), color='#FFDD44')    # 十六進制(RRGGBB, 00~FF)
plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3))    # RGB元組,範圍在0~1
plt.plot(x, np.sin(x - 5), color='chartreuse')    # HTML顏色名稱

在這裏插入圖片描述

  1. 調整線條風格:linestyle參數
# 調整線條風格
plt.plot(x, x + 0, linestyle='solid')
plt.plot(x, x + 1, linestyle='dashed')
plt.plot(x, x + 2, linestyle='dashdot')
plt.plot(x, x + 3, linestyle='dotted')

在這裏插入圖片描述
風格簡寫形式

# 簡寫形式
plt.plot(x, x + 0, linestyle='-') # 實線
plt.plot(x, x + 1, linestyle='--') # 虛線
plt.plot(x, x + 2, linestyle='-.') # 點劃線
plt.plot(x, x + 3, linestyle=':') # 實點線

在這裏插入圖片描述

  1. 更簡潔方式:將linestylecolor編碼組合起來,作爲plt.plot()函數的一個非關鍵字參數使用
# linestyle與color編碼組合使用
plt.plot(x, x + 0, '-g') # 綠色實線
plt.plot(x, x + 1, '--c') # 青色虛線
plt.plot(x, x + 2, '-.k') # 黑色點劃線
plt.plot(x, x + 3, ':r') # 紅色實點線

在這裏插入圖片描述

(二)調整圖形:座標軸上下限

Matplotlib會自動爲圖形選擇最合適的座標軸上下限,但有時自定義座標軸上下限會更好。

  1. 調整座標軸上下限最基礎的方法是plt.xlim()plt.ylim()
plt.plot(x, np.sin(x))

plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5)

在這裏插入圖片描述

  • 座標軸逆序顯示:可以逆序設置座標軸刻度值
plt.plot(x, np.sin(x))

plt.xlim(10, 0)
plt.ylim(1.2, -1.2)

在這裏插入圖片描述

  1. 調整座標軸上下限另一個方法plt.axis(),通過傳入[xmin, xmax, ymin, ymax]對應的值,plt.axis()方法可以用一行代碼設置x和y的限值
plt.plot(x, np.sin(x))
plt.axis([-1, 11, -1.5, 1.5])

在這裏插入圖片描述
(1) 設置:按照圖形內容自動收緊座標軸,不留空白區域

plt.plot(x, np.sin(x))
plt.axis('tight')

在這裏插入圖片描述
(2) 設置:屏幕顯示圖形分辨率爲1:1,x軸單位長度與y軸單位長度相等

plt.plot(x, np.sin(x))
plt.axis('equal')

在這裏插入圖片描述

(三)設置圖形標籤

設置圖形標籤的方法:圖形標題、座標軸標題、簡易圖例。

圖形標題與座標軸標題是最簡單的標籤,可以通過優化參數來調整標籤的位置、大小和風格。

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)")

在這裏插入圖片描述

在單個座標軸上顯示多條線時,創建圖例顯示每條線是很有效的方法:

  • plt.plot()函數中用label參數爲每條線設置一個標籤
  • plt.legend()將每條線的標籤與其風格、顏色自動匹配
plt.plot(x, np.sin(x), '-g', label='sin(x)')
plt.plot(x, np.cos(x), ':b', label='cos(x)')
plt.axis('equal')

plt.legend()

在這裏插入圖片描述

更多詳見:Matplotlib 3.2.1 documentation:

(四)Matplotlib陷阱:plt函數與ax方法之間轉換

雖然絕大多數plt函數都可以直接轉換成ax方法(如plt.plot() -> ax.plot(), plt.legend() -> ax.legend()等),

但並非所有命令都可以這樣用。尤其是設置座標軸上下限、座標軸標題和圖形標題的函數,大都略有差別。

一些MATLAB風格的方法和麪向對象方法轉換:

  • plt.xlabel() -> ax.set_xlabel()
  • plt.ylabel() -> ax.set_ylabel()
  • plt.xlim() -> ax.set_xlim()
  • plt.ylim() -> ax.set_ylim()
  • plt.title() -> ax.set_title()

在用面向對象接口畫圖時,不需要單獨調用這些函數,通常採用ax.set()方法一次性設置所有的屬性是更簡便的方法。

ax = plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2), 
       xlabel='x', ylabel='sin(x)', 
       title='A Simple Plot')

在這裏插入圖片描述


Matplotlib 相關閱讀:

[Python3] Matplotlib —— (一) 入門基礎


總結自《Python數據科學手冊》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章