MatplotLib庫是Python中最常用的第三方繪圖庫,他的API設計大部分模仿自matlab。是以matplotlib與matlab的使用十分相像。
以下程式段在各種環境下均可運作,但推薦在spyder下運作。
- 一維、二維資料的繪圖與儲存
import matplotlib.pyplot as plt
plt.plot([3,2,1,4,5])
plt.ylabel("grade")
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸點數,代表圖形品質)
plt.show() # 在IPython環境下展示圖像
對于一維資料,預設清單值為縱坐标,而清單的索引為橫坐标。繪圖結果如下

如果要在matlab中實作上述繪圖,應寫代碼如下,可将兩者進行對比。
a=[3,2,1,5,4];
plot(a);
以下是一個二維資料繪圖的小例:
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,2,1,4,5])
plt.ylabel("grade")
plt.axis([-1,10,0,6])
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸點數,代表圖形品質)
plt.show() # 在IPython環境下展示圖像
- 繪圖區域分割
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t)
a=np.arange(0,5,0.02)
b=f(a)
plt.subplot(2,1,1) # 也可以簡寫為plt.subplot(212)
plt.plot(a,b)
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
- plot函數的format_string
顔色字元
風格字元
标記字元
format string 由顔色字元+風格字元+标記字元組合而成
在繪圖時,為了區分不同的曲線,往往不僅需要不同的顔色,也需要不同的風格字元,這是因為在列印機上列印的時候線條往往是黑白的。下面是一個執行個體
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'bx',a,a*3.5,'r-.')
plt.show()
- pyplot的中文顯示
在pyplot繪圖中,并不能直接顯示中文,為了顯示中文,需要使用一些額外的參數,請看如下程式段:
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'go',a,a*3.5,'r-.')
plt.xlabel('橫軸',fontproperties='SimHei',fontsize=20)
plt.show()
在設定xlabel時,需要額外增加fontproperties='SimHei’這一參數,意思是使用黑體。python中的中文字型分别叫如下名稱:
- pyplot中的文本顯示函數
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r-')
plt.xlabel('橫軸',fontproperties='Kaiti',fontsize=20,color='red')
plt.ylabel('縱軸',fontproperties='Kaiti',fontsize=20)
plt.title('示例函數$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=20)
plt.text(2,1,'$\Omega =2\pi $',fontsize=12)
plt.axis([-1,6,-2,2])
plt.grid(True) # t要大寫
plt.show()
- 子繪圖區域的分割
利用subplot函數可以對繪圖區域進行一些簡單的分割,但是對于一些更複雜的情況則無能為力,例如如下區域分割,隻利用subplot函數則難以完成:
此時可以以下函數進行區域分割
plt.subplot2grid((3,3),(1,0),colspan=1)
這段代碼選中了圖中的黃色區域。參數(3,3)表示把整個區域分成的基本方格;(1,0)表示選中第1行第0列的小方格,也就是黃框的左半部分;cospan=2表示列方向的長度擴充為2。