【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資料也歡迎留言,共同學習,謝謝!