matplotlib 是Python最著名的2D繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地進行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應用程序中。通過簡單的繪圖語句,就可以繪制出高質量的圖了。
這里我們就主要講一下inshow()函數的使用吧。
一、引入matplotlib函數庫
如果你使用的是windows平台,大家可以直接下載對應版本的matplotlib庫的exe文件安裝即可。
使用下面的命令引入matplotlib的pyplot模塊:
import matplotlib.pyplot as plt
為方便起見,這樣我們就可以用plt來代替matplotlib.pyplot使用了。
二、Figure和Subplot
matplotlib的圖像都位於Figure對象中,實際上就是創建了一個空的圖像窗口。可以用plt.figure創建一個新的Figure。
fig = plt.figure()
不能通過空Figure繪圖,必須用add_subplot()創建一個或多個子sunplot繪圖區才能繪圖。
ax = fig.add_subplot(221)
意思是:繪制2×2兩行兩列共4個subplot圖像,當前選中第一個。編號從1開始。
得到如下的圖像:
三、繪制z = sqrt(x^2+y^2) 的二維函數輸出圖像
(1)准備數據
我們采用二維數組產生兩個二維矩陣,對應於所有的(x,y)對。
要使用數組,我們使用NumPy 模塊。
import numpy as np
points = np.arange(-5,5,0.01) #產生1000個-5到5等間隔的點
xs,ys = np.meshgrid(points,points) #np.meshgrid()接受兩個一維數組產生兩個二維矩陣((x,y)對)。
z = np.sqrt(xs**2+ys**2) #計算z = sqrt(x^2+y^2)的值
(2)繪圖
ax = fig.add_subplot(221) #第一個子圖
ax.imshow(z) #默認配置
ax = fig.add_subplot(222) #第一個子圖
ax.imshow(z,cmap = plt.cm.gray) #第二個子圖,使用自定義的colormap(灰度圖)
ax = fig.add_subplot(223) #第一個子圖
ax.imshow(z,cmap=plt.cm.cool) #第二個子圖,使用自定義的colormap
ax = fig.add_subplot(224) #第一個子圖
ax.imshow(z,cmap=plt.cm.hot) #第二個子圖,使用自定義的colormap
plt.show() #顯示圖像
於是,漂亮的圖像就出來了。
可是,細心的你發現,圖的坐標怎么是0-1000呢?是這樣的,我們給imshow傳入z矩陣是1000×1000的,z的索引其實就是圖像的坐標,而其值才是通過圖的顏色表現出來的。