手把手教你Python yLab的繪制折線圖的畫法
Python的可視化工具有很多,數(shù)不勝數(shù),各有優(yōu)劣。本文就對(duì)其中的pylab進(jìn)行介紹。之所以介紹這一款,是因?yàn)樗?code>Matlab的強(qiáng)烈相似度,如果你使用過(guò)Matlab,那么相信pylab你也會(huì)很快上手。
簡(jiǎn)單的plot函數(shù)
pylab繪圖,最基本的函數(shù)就是plot函數(shù),當(dāng)然如果想要將圖片顯示出來(lái),需要額外添加一個(gè)show函數(shù)。
在python的繪圖中,numpy是一個(gè)非常常用的工具,不太熟悉的可以參考博主的另一篇博文:【Python】Python之Numpy的超實(shí)用基礎(chǔ)詳細(xì)教程。
例如:
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, 1, 0.05)] pylab.plot(x, y) pylab.show()
運(yùn)行生成的圖片為:

規(guī)定兩個(gè)序列,只需要兩個(gè)序列的長(zhǎng)度相等,就可以以其中一個(gè)序列為橫坐標(biāo),零一個(gè)序列為縱坐標(biāo),進(jìn)行繪制。
但是也看得出來(lái),這樣的圖片是比較寒磣的,簡(jiǎn)單樸素。我們可以對(duì)線條進(jìn)行一些修飾,比如線型、顏色、點(diǎn)型等等。只需要在plot函數(shù)中添加一個(gè)參數(shù)即可。這個(gè)參數(shù)用法比較靈活,特可以從下表的值中進(jìn)行組合選擇:
| 顏色 | 線型 | 點(diǎn)型 |
|---|---|---|
| ‘b' (藍(lán)色) | ‘-' (實(shí)線) | ‘,' (像素) |
| ‘g' (綠色) | ‘–' (虛線) | ‘o' (圓形) |
| ‘r' (紅色) | ‘-.' (虛點(diǎn)線) | ‘^' (上三角) |
| ‘y' (黃色) | ‘:' (點(diǎn)線) | ‘s' (方形) |
| ‘k' (黑色) | ‘.' (點(diǎn)) | ‘+' (加號(hào)) |
| ‘w' (藍(lán)色) | … | ‘x' (叉形) |
| … | … |
例如:
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, 1, 0.05)] pylab.plot(x, y, "b-.+") pylab.show()
運(yùn)行生成的圖片為:

如果,還想增加圖例,x軸、y軸的含義和刻度,標(biāo)題的信息,也可以通過(guò)添加一些函數(shù)來(lái)進(jìn)行。
例如:
# -*- coding:UTF-8 -*-
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, 1, 0.05)]
pylab.plot(x, y, "b-.+", label='line')
pylab.xlabel('x') # x、y軸的介紹
pylab.ylabel('y')
pylab.xlim([0, 1]) # x、y軸的長(zhǎng)度區(qū)間
pylab.ylim([0, 1])
pylab.xticks(np.arange(0, 1, 0.05), fontsize=8) # x、y軸的刻度
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y') # x、y的標(biāo)題
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0)) # 圖例的位置
pylab.show()
運(yùn)行生成的圖片為:

是不是瞬間就感覺(jué)豐富了許多!
多折線繪制
當(dāng)然,在很多時(shí)刻需要繪制多條折線。很明顯,可以選擇將多條直線繪制到同一張圖片上,也可以選擇在圖片上繪制不同的子圖。
多折線同圖
將多條折線繪制到同一張圖片上,這非常簡(jiǎn)單,直接再plot一條直線就可以了。
例如:
# -*- coding:UTF-8 -*-
import pylab
import numpy as np
if __name__ == "__main__":
x = np.arange(0, 1, 0.05)
y1 = [i*i for i in np.arange(0, 1, 0.05)]
y2 = [i+i for i in np.arange(0, 1, 0.05)]
pylab.plot(x, y1, "b-.+", 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, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.show()
多折線不同圖
將多條折線繪制到圖片上的不同子圖上,這就需要通過(guò)subplot進(jìn)行區(qū)域分割和指定。
subplot(numRows, numCols, plotNum)
該函數(shù)會(huì)將這個(gè)圖片分為numRows行、nulCols列,然后按照從左到右、從上到下的順序進(jìn)行編號(hào),最左上的編號(hào)為1。plotNum參數(shù)指定子圖的所在區(qū)域。
例如:
# -*- coding:UTF-8 -*-
import pylab
import numpy as np
if __name__ == "__main__":
x = np.arange(0, 1, 0.05)
y1 = [i*i for i in np.arange(0, 1, 0.05)]
y2 = [i+i for i in np.arange(0, 1, 0.05)]
pylab.subplot(1, 2, 1)
pylab.plot(x, y1, "b-.+", label='line1')
pylab.xlabel('x')
pylab.ylabel('y1')
pylab.xlim([0, 1])
pylab.ylim([0, 1])
pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y1')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.subplot(1, 2, 2)
pylab.plot(x, y2, "r-.+", label='line2')
pylab.xlabel('x')
pylab.ylabel('y2')
pylab.xlim([0, 1])
pylab.ylim([0, 1])
pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y2')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.show()
運(yùn)行生成的圖片為:

這是比較規(guī)整的例子,如果是不規(guī)整的呢?例如,第一行兩張圖,第二行一張圖。這就要稍微變通一下了。
第一行其實(shí)是按照2*2分法的第一個(gè)和第二個(gè),第二行其實(shí)是按照2*1分法的第二行。這樣思考就會(huì)迎刃而解了。
# -*- coding:UTF-8 -*-
import pylab
import numpy as np
if __name__ == "__main__":
x = np.arange(0, 1, 0.05)
y1 = [i*i for i in np.arange(0, 1, 0.05)]
y2 = [i+i for i in np.arange(0, 1, 0.05)]
pylab.subplot(2, 2, 1)
pylab.plot(x, y1, "b-.+", label='line1')
pylab.xlabel('x')
pylab.ylabel('y1')
pylab.xlim([0, 1])
pylab.ylim([0, 1])
pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y1')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.subplot(2, 2, 2)
pylab.plot(x, y2, "r-.+", label='line2')
pylab.xlabel('x')
pylab.ylabel('y2')
pylab.xlim([0, 1])
pylab.ylim([0, 1])
pylab.xticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y2')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.subplot(2, 1, 2)
pylab.plot(x, y1, "b-.+", 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, 1, 0.05), fontsize=8)
pylab.yticks(np.arange(0, 1, 0.05), fontsize=8)
pylab.title('x-y')
pylab.legend(loc=3, borderaxespad=0., bbox_to_anchor=(0, 0))
pylab.show()
運(yùn)行生成的圖片為:

其他函數(shù)
除了上述函數(shù)之外,還有一些其他的常用函數(shù)。
pylab.grid() # 網(wǎng)格繪制 pylab.savefig(圖片存儲(chǔ)路徑, dpi=200) # 保存為圖片
掌握了這些基本的折現(xiàn)圖的繪制函數(shù),相信一般的折線圖都可以輕松掌握。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)每天定時(shí)發(fā)送郵件的流程步驟
這篇文章主要介紹了python實(shí)現(xiàn)每天定時(shí)發(fā)送郵件的流程步驟,要編寫一個(gè)用于自動(dòng)發(fā)送每日電子郵件報(bào)告的 Python 腳本,并配置它在每天的特定時(shí)間發(fā)送電子郵件,文中給大家介紹了詳細(xì)步驟和示例代碼,需要的朋友可以參考下2024-08-08
Tensorflow 2.4 搭建單層和多層 Bi-LSTM 模型
這篇文章主要為大家介紹了Tensorflow 2.4 搭建單層 Bi-LSTM 模型和多層 Bi-LSTM 模型的實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
python實(shí)現(xiàn)圖片加文字水印OPenCV和PIL庫(kù)
本文來(lái)為大家介紹一下,使用python中的庫(kù)實(shí)現(xiàn)給圖片添加文字水印,openCV可以給圖片添加水印,如果要添加漢字水印那就要使用PIL庫(kù)2021-09-09
Python深度學(xué)習(xí)pytorch神經(jīng)網(wǎng)絡(luò)塊的網(wǎng)絡(luò)之VGG
雖然AlexNet證明深層神經(jīng)網(wǎng)絡(luò)卓有成效,但它沒(méi)有提供一個(gè)通用的模板來(lái)指導(dǎo)后續(xù)的研究人員設(shè)計(jì)新的網(wǎng)絡(luò)。下面,我們將介紹一些常用于設(shè)計(jì)深層神經(jīng)網(wǎng)絡(luò)的啟發(fā)式概念2021-10-10
python從Hadoop?HDFS導(dǎo)出數(shù)據(jù)到關(guān)系數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Python如何從Hadoop?HDFS中導(dǎo)出數(shù)據(jù)并通過(guò)DataX工具導(dǎo)入到關(guān)系數(shù)據(jù)庫(kù),例如MySQL,Oracle,PostgreSQL等,感興趣的可以了解下2024-11-11
pytorch如何保存訓(xùn)練模型參數(shù)并實(shí)現(xiàn)繼續(xù)訓(xùn)練
這篇文章主要介紹了pytorch如何保存訓(xùn)練模型參數(shù)并實(shí)現(xiàn)繼續(xù)訓(xùn)練問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

