1. 程式人生 > >Matplotlib入門簡介

Matplotlib入門簡介

Matplotlib是一個用Python實現的繪相簿。現在很多機器學習,深度學習教學資料中都用它來繪製函式圖形。在學習演算法過程中,Matplotlib是一個非常趁手的工具。

一般概念

圖形(figure)
類似於畫布,它包含一個或多個子座標系(axes)。至少有一個座標系才能有用。

下面是一段簡單的示例程式碼,只是建立了一個子座標系

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure() #空figure,沒有座標系.
fig.suptitle("No Axes on this figure") #設定頂部標題

fig, ax_lst = plt.subplots(2, 2) #一個2 x 2 網格的的座標系

座標系(Axes): figure的繪圖區域。一個figure只能有可以有多個Axes,但一個Axes只能位於一個figure中。一個Axes包含兩個(在3D情況下有3個)座標軸(Axis),Axis的主要作用是限制資料的範圍(可使用Axes的set_xlim()和set_ylim()方法設限制)。每個座標系有一個標題(title),使用set_title()設定,一個x軸標籤(x-label,使用set_xlabel()設定),一個y軸標籤(y-label,使用set_ylabel()設定)。

座標軸(Axis): 類似於數字線( number-line-like)的物件,可設定圖表的限制並生成刻度和刻度標籤。Locator物件用來決定刻度的位置。刻度標籤字串使用Formattor格式化。恰當的Locator和Formattor組合可以有效地控制刻度位置可刻度標籤。

畫家(Artist): 一般來說,所有你能在figure中看到的都使用一個畫家(Artist)(包括Figure, Axes和Axis物件),這其中包含:文字物件(Text), 2D線條(line2D), 集合物件,點(Path)物件等等。當一個figure被渲染時,所有的Artist都會在畫布上回繪圖。大多數Artist被繫結在一個Axes上,不能被多個Axes共享,或從一個Axes移動到另一個。

繪圖函式的輸入型別

所有的繪圖函式期待的輸入型別是np.array或np.ma.masked_array。看起來像陣列的類比如np.martrix可能能正常使用。

Matplotlib,pyplot和pylab之間的關係

Matplotlib是整個包,matplotlib.pyplot是Matplotlib中的一個模組。
對pyplot模組中的函式來說,總是有一個"當前的"figure和axes。例如在下面的例子中,第一次呼叫pyplot.plot會建立一個axes,接下來的一系列pyplot.plot呼叫迴向同一個axes中新增多條線,plt.xlabel, plt.ylabel, plt.title and plt.legend呼叫回在這個axes中新增標籤,標題和圖例。

x = np.linspace(0, 2, 100)

plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')

plt.xlabel('x label')
plt.ylabel('y label')

plt.title("Simple Plot")

plt.legend()

plt.show()
這段程式碼輸出的圖形如下。可以把最後一行的plt.show(),改成plt.savefig("simplePlot.png"),把圖形輸出成png格式的檔案。

pylab是一個可方便地把matplotlib.pyplot和numpy批量匯入到一個獨立名稱空間的模組,現已被棄用,建議使用pyplot代替。

 

&n