1. 程式人生 > >matplotlib----繪製精美的圖表

matplotlib----繪製精美的圖表

matplotlib是python最著名的繪相簿,它提供了一整套和matlab相似的命令API,十分適合互動式地進行製圖。而且也可以方便地將它作為繪圖控制元件,嵌入GUI應用程式中。

1. 快速繪圖

matplotlib的pyplot子庫提供了和matlab類似的繪圖API,方便使用者快速繪製2D圖表。讓我們先來看一個簡單的例子,程式如下:

# -*- coding: utf-8 -*-
import numpy as np    #匯入函式庫
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)   #建立陣列
y = np.sin
(x) z = np.cos(x**2) plt.figure(figsize=(8,4)) #呼叫figure建立繪畫影象 #呼叫plot函式,指定曲線名字、顏色、曲線寬度 plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) plt.plot(x,z,"b--",label="$cos(x^2)$") plt.xlabel("Time(s)") #設定x軸文字 plt.ylabel("Volt") #設定y軸文字 plt.title("PyPlot First Example") #設定圖示標題 plt.ylim(-1.2,1.2
) #設定y軸範圍 plt.legend() #顯示圖示 plt.show() #顯示建立的所有繪圖物件

將程式儲存為pyplot.py檔案,執行結果如下:
這裡寫圖片描述
這裡寫圖片描述

2. 繪製多軸圖

一個繪圖物件(figure)可以包含多個軸(axis),在Matplotlib中用軸表示一個繪圖區域,可以將其理解為子圖。上面的第一個例子中,繪圖物件只包括一個軸,因此只顯示了一個軸(子圖)。我們可以使用subplot函式快速繪製有多個軸的圖表。subplot函式的呼叫形式如下:

subplot(numRows, numCols, plotNum)

subplot將整個繪圖區域等分為numRows行 * numCols列個子區域,然後按照從左到右,從上到下的順序對每個子區域進行編號,左上的子區域的編號為1。subplot在plotNum指定的區域中建立一個軸物件。如果新建立的軸和之前建立的軸重疊的話,之前的軸將被刪除。

下面的程式建立3行2列共6個軸,通過axisbg引數給每個軸設定不同的背景顏色。

for idx, color in enumerate("rgbyck"):
    plt.subplot(320+idx+1, axisbg=color)
plt.show()

結果如下:
這裡寫圖片描述

如果希望某個軸佔據整個行或者列的話,可以如下呼叫subplot:

plt.subplot(221) # 第一行的左圖
plt.subplot(222) # 第一行的右圖
plt.subplot(212) # 第二整行
plt.show()

結果如下:
這裡寫圖片描述

當繪圖物件中有多個軸的時候,可以通過工具欄中的Configure Subplots按鈕,互動式地調節軸之間的間距和軸與邊框之間的距離。如果希望在程式中調節的話,可以呼叫subplots_adjust函式,它有left, right, bottom, top, wspace, hspace等幾個關鍵字引數,這些引數的值都是0到1之間的小數,它們是以繪圖區域的寬高為1進行正規化之後的座標或者長度。