1. 程式人生 > >【python筆記】使用matplotlib,pylab進行python繪圖

【python筆記】使用matplotlib,pylab進行python繪圖

 一提到python繪圖,matplotlib是不得不提的python最著名的繪相簿,它裡面包含了類似matlab的一整套繪圖的API。因此,作為想要學習python繪圖的童鞋們就得在自己的python環境中安裝matplotlib庫了,安裝方式這裡就不多講,方法有很多。

  本文將在已安裝matplotlib的環境中教新手如何快速使用其中的介面進行繪圖操作,並展現一個非常直觀的繪圖例子,以及控制繪圖中的一些細節的方法。

  既然繪圖要用matplotlib的包,並且我們也已經安裝了,那麼首先肯定是要引入這個包了: import matplotlib.pyplot as plt 

  當然也可以替換為引入pylab(是matplotlib的一個子包,非常適合於進行互動式繪圖,本文將以這個為例): import pylab as pl 

  接下來,就是對具體資料進行繪圖了。比如我們要繪製一條y=x^2的曲線,可這樣寫程式碼:

x = range(10)  # 橫軸的資料
y = [i*i for i in x]  # 縱軸的資料
pl.plot(x, y)  # 呼叫pylab的plot函式繪製曲線
pl.show()  # 顯示繪製出的圖

  執行之後就可以看到繪製出來的圖了:

  

  可以看到,要顯示一個圖非常簡單,只要有了兩個list作為輸入資料,先後呼叫plot和show函式就可以了。一定要記得只有呼叫了show之後才會顯示出來!只有plot是不行的!

  在實際運用中,可能這樣一條簡單粗暴的線可能並不是我們想要的最好的結果,比如,想要在圖形上顯示原始資料點,很簡單,只要在plot函式中加上一個引數即可: pl.plot(x, y, 'ob-') # 顯示資料點,並用藍色(blue)實現繪製該圖形 

  這個引數用法比較靈活,可以從下面的值中組合選擇:

顏色(color 簡寫為 c):
藍色: 'b' (blue)
綠色: 'g' (green)
紅色: 'r' (red)
藍綠色(墨綠色): 'c' (cyan)
紅紫色(洋紅): 'm' (magenta)
黃色: 'y' (yellow)
黑色: 'k' (black)
白色: 'w' (white)

線型(linestyle 簡寫為 ls):
實線: '-'
虛線: '--'
虛點線: '-.'
點線: ':'
點: '.' 

點型(標記marker):
畫素: ','
圓形: 'o'
上三角: '^'
下三角: 'v'
左三角: '<'
右三角: '>'
方形: 's'
加號: '+' 
叉形: 'x'
稜形: 'D'
細稜形: 'd'
三腳架朝下: '1'(像'丫')
三腳架朝上: '2'
三腳架朝左: '3'
三腳架朝右: '4'
六角形: 'h'
旋轉六角形: 'H'
五角形: 'p'
垂直線: '|'
水平線: '_'

  線是調好了,可是還想加上橫縱座標的說明呢?也很簡單,在呼叫show函式之前新增如下程式碼:

pl.xlabel(u"我是橫軸")
pl.ylabel(u"我是縱軸")

  效果如下:

  

  這裡一定要記住,傳遞的字串一定要是Unicode編碼,如果是直接傳入字串,形式如 u'這裡是要寫的字串' 即可。

  現在就直觀多了吧,終於像一個正常的圖了,不過,還想再在圖裡加個圖例該咋辦?也不難,繼續給plot傳引數:

pl.plot(x, y, 'ob-', label=u'y=x^2曲線圖')  # 加上label引數新增圖例
pl.legend()  # 讓圖例生效

  這裡也是一樣,label字串引數務必加上u''宣告為unicode編碼,否則圖例將會新增失敗。效果圖如下:

  

  oh,看到影象上面光禿禿的,就好想給它加個標題: pl.title(u'影象標題') # 字串也需要是unicode編碼 

  有時候,我們的資料可能分佈並沒有這麼集中,比如我們想要對專案中的某些資料進行繪圖觀察時發現,大量資料聚集在0附近,而少量很大的資料會導致影象顯示效果很不好,比如:  

x = range(10)+[100]
y = [i*i for i in x]
pl.plot(x, y, 'ob-', label=u'y=x^2曲線圖')

  

  這時,我們想要限制需要顯示的座標範圍:

pl.xlim(-1, 11)  # 限定橫軸的範圍
pl.ylim(-1, 110)  # 限定縱軸的範圍

  再上效果圖:

  

  好了,到這裡plot的常用繪圖用法就講完了,另外,如果需要在一幅圖中顯示多條線,可以在show函式呼叫前繼續呼叫plot函式,傳入需要繪製的資料和圖形顯示要求。

  matplotlib是個非常好用的庫,不管是對於需要寫論文畫圖,還是資料調研中看資料相關性,都是一個得力助手。   

  本文簡要介紹了下python繪圖入門的一些用法,如有不對之處,歡迎大家指正。我也是不久前才開始真正使用python,這個強大而方便的語言會讓我們能更快地實現自己的想法,大家有比較好的python資料也歡迎留言,共同學習,謝謝!