Matplotlib繪圖範例


在這篇文章中,將列出一系列Matplotlib繪圖範例,包含生成它們的程式碼。

線圖

以下是使用plot()建立帶有文字標籤的plot()方法。

線圖

圖中的多個子圖

使用subplot()函式建立多個軸(即子圖):

多個子圖

圖片

Matplotlib可以使用imshow()函式顯示影象(假設水平尺寸相等)。

圖片

輪廓和偽彩色

即使水平尺寸不均勻,pcolormesh()函式也可以製作二維陣列的彩色表示。contour()函式是表示相同資料的另一種方式:

輪廓和偽彩色

比較pcolormesh()contour()繪製二維資料的範例。

直方圖

hist()函式自動生成直方圖並返回bin計數或概率:

直方圖

路徑圖

可以使用matplotlib.path模組在Matplotlib中新增任意路徑:

路徑圖

三維繪圖

mplot3d工具包(參見入門和3D繪圖)支援簡單的三維圖形,包括曲面,線框,散點圖和條形圖。

三維繪圖

使用到 John Porter,Jonathon Taylor,Reinier Heeres和Ben Root的mplot3d工具包。此工具包包含在所有標準Matplotlib安裝中。

Streamplot

streamplot()函式繪製向量場的流線。除了簡單地繪製流線圖之外,它還允許將流線的顏色和/或線寬對映到單獨的引數,例如向量場的速度或區域性強度。

Streamplot

此功能補充了用於繪製向量場的quiver()函式。

橢圓形

為了支援菲尼克斯火星任務(使用Matplotlib顯示航天器的地面跟蹤),Michael Droettboom建立在Charlie Moad的工作基礎上,為橢圓弧(參見Arc)提供極其精確的8樣條近似,它對縮放不敏感。

橢圓形

條形圖

使用bar()函式製作條形圖,其中包括錯誤欄等自定義:

條形圖

餅狀圖

pie()函式用於建立餅圖。可選功能包括自動標記區域的百分比,從餅圖中心爆炸一個或多個楔形,以及陰影效果。仔細檢視附加的程式碼,只需幾行程式碼即可生成此圖。

餅狀圖

表圖

table()函式將一個文字表新增到軸。

表圖

散點圖

scatter()函式使用(可選)大小和顏色引數建立散點圖。此範例繪製了Google股票價格的變化,標記尺寸反映了交易量和顏色隨時間變化。這裡,alpha屬性用於製作半透明圓圈標記。

散點圖

GUI小部件

Matplotlib具有獨立於使用的圖形化使用者介面的基本GUI小部件,允許編寫跨GUI圖形和小部件。請參閱matplotlib.widgets和小部件範例。

GUI小部件

填充曲線

fill()函式可以繪製填充的曲線和多邊形:

填充曲線

日期處理

可以繪製具有主要和次要刻度的時間序列資料以及兩者的自定義刻度格式器。

日期處理

對數圖

semilogx()semilogy()loglog()函式簡化了對數圖的建立。

對數圖

極坐標圖

polar()函式生成極坐標圖。

極坐標圖

圖例

legend()函式自動生成圖形圖例,具有MATLAB相容的圖例放置功能。

圖例

文字物件的TeX符號

下面是Matplotlib內部mathtext引擎現在支援的許多TeX表示式的範例。mathtext模組使用FreeType和DejaVu,BaKoMa計算機現代或STIX字型提供TeX樣式的數學表示式。

TeX符號

Matplotlib的mathtext基礎結構是一個獨立的實現,不需要在您的計算機上安裝TeX或任何外部軟體包。

原生TeX渲染

雖然Matplotlib的內部數學渲染引擎非常強大,但有時候你需要TeX。Matplotlib支援使用usetex選項對字串進行外部TeX渲染。

原生TeX渲染

EEG GUI

可以將Matplotlib嵌入到pygtk,wx,Tk或Qt應用程式中。它是一個名為pbrain的EEG檢視器的螢幕截圖。

EEG

子圖範例

許多繪圖型別可以組合在一個圖中,以建立強大而靈活的資料表示。

子圖示例

範例程式碼 -

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(19680801)
data = np.random.randn(2, 100)

fig, axs = plt.subplots(2, 2, figsize=(5, 5))
axs[0, 0].hist(data[0])
axs[1, 0].scatter(data[0], data[1])
axs[0, 1].plot(data[0], data[1])
axs[1, 1].hist2d(data[0], data[1])

plt.show()