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可能能正常使用。this
Matplotlib是整個包,matplotlib.pyplot是Matplotlib中的一個模塊。
對pyplot模塊中的函數來講,老是有一個"當前的"figure和axes。例如在下面的例子中,第一次調用pyplot.plot會建立一個axes,接下來的一系列pyplot.plot調用迴向同一個axes中添加多條線,plt.xlabel, plt.ylabel, plt.title and plt.legend調用回在這個axes中添加標籤,標題和圖例。spa
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代替。code