python 使用matplotlib,pylab進行python繪圖
既然繪圖要用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是個非常好用的庫,不管是對於需要寫論文畫圖,還是資料調研中看資料相關性,都是一個得力助手。寫這篇文章的背景是我之前在專案中也使用這個做了一個特徵與結果之間的相關性調研中使用到了繪圖,就學習了一下,下面是對真實資料進行遮蔽改寫之後的一個很像的示意圖(感興趣的可以到我github中看原始碼,本文的完整程式碼及註釋也可在本連結只中找到):
來源:http://www.cnblogs.com/webary/p/5813855.html