如何使用Python腳本語(yǔ)言的繪圖庫(kù)Matplotlib
本文介紹Python計(jì)算機(jī)程序設(shè)計(jì)腳本語(yǔ)言中一個(gè)重要的繪圖庫(kù)Matplotlib,它可以生成各種硬拷貝格式和跨平臺(tái)交互式環(huán)境的出版物質(zhì)量數(shù)據(jù)。Matplotlib可用于Python腳本,Python和IPython shell,Jupyter筆記本等。
對(duì)于簡(jiǎn)單的繪圖,pyplot模塊提供類(lèi)似MATLAB的接口,特別是與IPython結(jié)合使用時(shí)。對(duì)于高級(jí)用戶,你可以通過(guò)面向?qū)ο蟮慕缑婊蛲ㄟ^(guò)MATLAB用戶熟悉的一組函數(shù)控制線型,字體屬性,軸屬性等。如下圖,你可以自由繪制常見(jiàn)圖形,3D圖形等。

關(guān)于Matplotlib如何安裝可以自行搜索,昌暉儀表建議初學(xué)者安裝Anaconda軟件,Anaconda 是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持Linux,Mac,Windows,包含了眾多流行的科學(xué)計(jì)算、數(shù)據(jù)分析的Python包。可以登錄獲取軟件。根據(jù)自己的操作系統(tǒng)選擇對(duì)應(yīng)的軟件,Python版本選擇3.7。
軟件的具體安裝方法不再累述,安裝完成后,打開(kāi)Anaconda Navigator后如下圖顯示。
我們的編程測(cè)試環(huán)境將使用Jupyter Notebook,點(diǎn)擊“Launch”登錄后將如下圖顯示
建立一個(gè)項(xiàng)目文件夾,然后新建一個(gè)Python 3的項(xiàng)目,我們就可以愉快的編程了。
案例1:繪制一條線import matplotlib.pyplot as plt #導(dǎo)入pyplotimport numpy as np #導(dǎo)入numpy# np.linspace為numpy的等差數(shù)列函數(shù),形成一個(gè)0到100之間,共50個(gè)元素的函數(shù)x=np.linspace(0,100,50)y=2*x+1 #賦值運(yùn)算#最重要的一步,plot用于繪制線條或標(biāo)記的軸,可以線性,顏色等plt.plot(x,y) #默認(rèn)直接繪制plt.show()
案例2:繪制一條特殊的線import matplotlib.pyplot as pltimport numpy as npx=np.linspace(0,100,20)#print (x)y=2*x+1#與案例1中不同的是增加很多參數(shù),如color(顏色), linewidth(線寬), linestyle(線性), marker(標(biāo)記)plt.plot(x,y,color='red',linewidth=1.0,linestyle='-',marker='o')plt.show()
案例3:繪制餅圖
import matplotlib.pyplot as pltlabels='Frogs', 'Hogs', 'Dogs', 'Logs' #定義標(biāo)簽sizes=[15, 30, 45, 10] #定義餅圖的大小explode=(0, 0.1, 0, 0) #定義切片fig1, ax1 = plt.subplots() #導(dǎo)入餅圖#定義餅圖的樣式,此示例將 startangle設(shè)置為90 ,以便將所有對(duì)象逆時(shí)針旋轉(zhuǎn)90度,定義了數(shù)#據(jù)顯示格式以小數(shù)顯示,帶陰影ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)ax1.axis('equal') # 等縱橫比可確保將餅圖繪制為圓。.plt.show()
案例4:繪制3D圖import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D #導(dǎo)入3D圖庫(kù)fig = plt.figure(figsize=(12, 8)) #figure的大小ax = Axes3D(fig)# 生成X,YX = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X,Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2) # height valueZ = np.sin(R)# 繪圖# rstride(row)和cstride(column)表示的是行列的跨度ax.plot_surface(X, Y, Z, rstride=1, # 行的跨度 cstride=1, # 列的跨度 cmap=plt.get_cmap('rainbow') # 顏色映射樣式設(shè)置 )# offset 表示距離zdir的軸距離ax.contourf(X, Y, Z, zdir='z', offest=-2, cmap='rainbow')ax.set_zlim(-2, 2)plt.show()
以上代碼已測(cè)試通過(guò),感興趣的朋友可以進(jìn)行測(cè)試。更多Matplotlib的應(yīng)用可以參考詳細(xì)資料介紹。
作者:老羅,具有10年工業(yè)自動(dòng)化領(lǐng)域的SCADA、DCS、PLC等項(xiàng)目實(shí)施經(jīng)驗(yàn),熟悉石化行業(yè)、油田數(shù)字化行業(yè),熟悉多個(gè)品牌PLC、、SCADA、數(shù)據(jù)庫(kù)等。
版權(quán)與免責(zé)聲明:
1.凡本網(wǎng)注明"來(lái)源:歐亞貿(mào)易網(wǎng)"的所有作品,版權(quán)均屬于歐亞貿(mào)易網(wǎng),轉(zhuǎn)載請(qǐng)必須注明歐亞貿(mào)易網(wǎng)。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
2.企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
3.本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
4.如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系。