1. 程式人生 > 程式設計 >手把手教你Python yLab的繪製折線圖的畫法

手把手教你Python yLab的繪製折線圖的畫法

Python的視覺化工具有很多,數不勝數,各有優劣。本文就對其中的pylab進行介紹。之所以介紹這一款,是因為它和Matlab的強烈相似度,如果你使用過Matlab,那麼相信pylab你也會很快上手。

簡單的plot函式

pylab繪圖,最基本的函式就是plot函式,當然如果想要將圖片顯示出來,需要額外新增一個show函式。

python的繪圖中,numpy是一個非常常用的工具,不太熟悉的可以參考博主的另一篇博文:【Python】Python之Numpy的超實用基礎詳細教程。

例如:

import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,1,0.05)
 y = [i*i for i in np.arange(0,0.05)]
 pylab.plot(x,y)
 pylab.show()

執行生成的圖片為:

規定兩個序列,只需要兩個序列的長度相等,就可以以其中一個序列為橫座標,零一個序列為縱座標,進行繪製

但是也看得出來,這樣的圖片是比較寒磣的,簡單樸素。我們可以對線條進行一些修飾,比如線型、顏色、點型等等。只需要在plot函式中新增一個引數即可。這個引數用法比較靈活,特可以從下表的值中進行組合選擇:

顏色 線型 點型
‘b' (藍色) ‘-' (實線) ‘,' (畫素)
‘g' (綠色) ‘–' (虛線) ‘o' (圓形)
‘r' (紅色) ‘-.' (虛點線) ‘^' (上三角)
‘y' (黃色) ‘:' (點線) ‘s' (方形)
‘k' (黑色) ‘.' (點) ‘+' (加號)
‘w' (藍色) ‘x' (叉形)

例如:

import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,y,"b-.+")
 pylab.show()

執行生成的圖片為:

如果,還想增加圖例,x軸、y軸的含義和刻度,標題的資訊,也可以通過新增一些函式來進行。

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,"b-.+",label='line')
 
 pylab.xlabel('x')       # x、y軸的介紹
 pylab.ylabel('y')
 
 pylab.xlim([0,1])      # x、y軸的長度區間
 pylab.ylim([0,1])
 
 pylab.xticks(np.arange(0,0.05),fontsize=8)    # x、y軸的刻度
 pylab.yticks(np.arange(0,fontsize=8)
 
 pylab.title('x-y')      # x、y的標題
 
 pylab.legend(loc=3,borderaxespad=0.,bbox_to_anchor=(0,0))     # 圖例的位置
 pylab.show()

執行生成的圖片為:

是不是瞬間就感覺豐富了許多!

多折線繪製

當然,在很多時刻需要繪製多條折線。很明顯,可以選擇將多條直線繪製到同一張圖片上,也可以選擇在圖片上繪製不同的子圖。

多折線同圖

將多條折線繪製到同一張圖片上,這非常簡單,直接再plot一條直線就可以了。

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,0.05)
 y1 = [i*i for i in np.arange(0,0.05)]
 y2 = [i+i for i in np.arange(0,y1,label='line1')
 pylab.plot(x,y2,"r-.+",label='line2')

 pylab.xlabel('x')
 pylab.ylabel('y')
 pylab.xlim([0,1])
 pylab.ylim([0,1])
 pylab.xticks(np.arange(0,fontsize=8)
 pylab.yticks(np.arange(0,fontsize=8)
 pylab.title('x-y')
 pylab.legend(loc=3,0))
 pylab.show()

多折線不同圖

將多條折線繪製到圖片上的不同子圖上,這就需要通過subplot進行區域分割和指定。

subplot(numRows,numCols,plotNum)

該函式會將這個圖片分為numRows行、nulCols列,然後按照從左到右、從上到下的順序進行編號,最左上的編號為1。plotNum引數指定子圖的所在區域

例如:

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,0.05)]

 pylab.subplot(1,2,1)
 pylab.plot(x,label='line1')
 pylab.xlabel('x')
 pylab.ylabel('y1')
 pylab.xlim([0,fontsize=8)
 pylab.title('x-y1')
 pylab.legend(loc=3,0))

 pylab.subplot(1,2)
 pylab.plot(x,label='line2')
 pylab.xlabel('x')
 pylab.ylabel('y2')
 pylab.xlim([0,fontsize=8)
 pylab.title('x-y2')
 pylab.legend(loc=3,0))

 pylab.show()

執行生成的圖片為:

這是比較規整的例子,如果是不規整的呢?例如,第一行兩張圖,第二行一張圖。這就要稍微變通一下了。

第一行其實是按照2*2分法的第一個和第二個,第二行其實是按照2*1分法的第二行。這樣思考就會迎刃而解了。

# -*- coding:UTF-8 -*-
import pylab
import numpy as np

if __name__ == "__main__":
 x = np.arange(0,0.05)]

 pylab.subplot(2,0))

 pylab.subplot(2,label='line2')
 pylab.xlabel('x')
 pylab.ylabel('y')
 pylab.xlim([0,0))

 pylab.show()

執行生成的圖片為:

其他函式

除了上述函式之外,還有一些其他的常用函式。

pylab.grid()       # 網格繪製

pylab.savefig(圖片儲存路徑,dpi=200)    # 儲存為圖片

掌握了這些基本的折現圖的繪製函式,相信一般的折線圖都可以輕鬆掌握。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。