matplotlib python繪圖

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

它的文檔相當完備,並且 Gallery頁面 中有上百幅縮略圖,打開之後都有源程序。因此如果你需要繪製某種類型的圖,只需要在這個頁面中瀏覽/複製/粘貼一下,基本上都能搞定。

 

Linux下比較著名的數據圖工具還有gnuplot,這個是免費的,Python有一個包可以調用gnuplot,但是語法比較不習慣,而且畫圖質量不高。

而 Matplotlib則比較強:Matlab的語法、python語言、latex的畫圖質量(還可以使用內嵌的latex引擎繪製的數學公式)。


快速繪圖\

matplotlib的pyplot子庫提供了和matlab類似的繪圖API,方便用戶快速繪製2D圖表。例子:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# coding=gbk
'''
Created on Jul 12, 2014
python 科學計算學習:numpy快速處理數據測試
@author: 皮皮
'''
import string
import matplotlib.pyplot as plt 
import numpy as np
 
if __name__ == '__main__':   
    file = open(E:machine_learningdatasetshousing_datahousing_data_ages.txt, 'r')
    linesList = file.readlines()
#     print(linesList)
    linesList = [line.strip().split(,) for line in linesList]
    file.close()   
    print(linesList:)
    print(linesList)
#     years = [string.atof(x[0]) for x in linesList]
    years = [x[0] for x in linesList]
    print(years)
    price = [x[1] for x in linesList]
    print(price)
    plt.plot(years, price, 'b*')#,label=$cos(x^2)$)
    plt.plot(years, price, 'r')
    plt.xlabel(years(+2000))
    plt.ylabel(housing average price(*2000 yuan))
    plt.ylim(0, 15)
    plt.title('line_regression & gradient decrease')
    plt.legend()
    plt.show()
\

 

matplotlib中的快速繪圖的函數庫可以通過如下語句載入:

?
1
import matplotlib.pyplot as plt

pylab模塊

matplotlib還提供了名爲pylab的模塊,其中包括了許多numpy和pyplot中常用的函數,方便用戶快速進行計算和繪圖,可以用於IPython中的快速交互式使用。

接下來調用figure創建一個繪圖對象,並且使它成爲當前的繪圖對象。

?
1
plt.figure(figsize=(8,4))

也可以不創建繪圖對象直接調用接下來的plot函數直接繪圖,matplotlib會爲我們自動創建一個繪圖對象。如果需要同時繪製多幅圖表的話,可以是給figure傳遞一個整數參數指定圖標的序號,如果所指定序號的繪圖對象已經存在的話,將不創建新的對象,而只是讓它成爲當前繪圖對象。

通過figsize參數可以指定繪圖對象的寬度和高度,單位爲英寸;dpi參數指定繪圖對象的分辨率,即每英寸多少個像素,缺省值爲80。因此本例中所創建的圖表窗口的寬度爲8*80 = 640像素。

但是用工具欄中的保存按鈕保存下來的png圖像的大小是800*400像素。這是因爲保存圖表用的函數savefig使用不同的DPI配置,savefig函數也有一個dpi參數,如果不設置的話,將使用matplotlib配置文件中的配置,此配置可以通過如下語句進行查看:

?
1
2
3
>>> import matplotlib
>>> matplotlib.rcParams[savefig.dpi]
100

下面的兩行程序通過調用plot函數在當前的繪圖對象中進行繪圖:

?
1
2
plt.plot(years, price, 'b*')#,label=$cos(x^2)$)
plt.plot(years, price, 'r')

plot函數的調用方式很靈活,第一句將x,y數組傳遞給plot之後,用關鍵字參數指定各種屬性:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章