詳解Python中matplotlib模塊的繪圖方式
1、matplotlib之父簡介
matplotlib之父John D. Hunter已經(jīng)去世,他的一生輝煌而短暫,但是他開發(fā)的的該開源庫還在繼續(xù)著輝煌。國內(nèi)介紹的資料太少了,查閱了一番整理如下:
- 1968 出身于美國的田納西州代爾斯堡。
- 之后求學(xué)于普林斯頓大學(xué)。
- 2003年發(fā)布Matplotlib 0.1版,初衷是博士研究期間為可視化癲癇患者的腦電圖(ECoG)數(shù)據(jù);
- 之后,美國國家航空航天局(NASA)太空望遠鏡科學(xué)研究所的哈勃望遠鏡背后團隊(Hubble Space Telescope),選擇Matplotlib作為了畫圖程序包,并一直為 Matplotlib 開發(fā)團隊提供資金支持,從而大大促進了 Matplotlib 的發(fā)展。
- 2004 年于芝加哥大學(xué)獲得神經(jīng)生物學(xué)方向博士學(xué)位。
- 2005年供職于芝加哥的一家投資公司,從事量化分析(真是生物人遍布各行各業(yè))。
- 之后以董事的身份創(chuàng)立了專為數(shù)據(jù)科學(xué)贊助的非盈利組織 NumFOCUS Foundation。
- 2007年美國鳳凰號探測器(Phoenix spacecraft)登錄火星,NASA使用Matplotlib可視化了第一張黑洞的圖片。
- 2012年因John D. Hunter個人對Python和數(shù)據(jù)科學(xué)方向的杰出貢獻,被Python社區(qū)授予第一屆PSF Distinguished Service Awards獎項 。
- 2012.08 因患惡性結(jié)腸癌英年早逝,享年44歲。
- 雖然Matplotlib之父已經(jīng)去世,但是,大量開源愛好者在fork著這個可視化包,延續(xù)著輝煌 https://github.com/matplotlib。
- NumFOCUS 組織每年夏天會贊助1到2個學(xué)生,在高級貢獻者的帶領(lǐng)下,為Matplolib全職工作10周左右(2018年獎金多達$6,000):https://numfocus.org/programs/john-hunter-technology-fellowship 。
- 2013年起,SciPy每年舉行可視化比賽:John Hunter Excellence in Plotting Competition,一是為了為了紀念John Hunter的貢獻,二是為了強調(diào)數(shù)據(jù)可視化對科學(xué)進步的重要性,并展示開源軟件力量。;2020年報名截止日期為06月01號,獎金優(yōu)渥(1st prize: $1000;2nd prize: $750;3rd prize: $500):https://jhepc.github.io/index.html 。
2、matplotlib圖形結(jié)構(gòu)
figure層
指整張圖,可設(shè)置整張圖的分辨率(dpi),長寬(figsize)、標題(title)等特征;
可包含多個axes,可簡單理解為多個子圖(下圖為兩個axes);
figure置于canvas系統(tǒng)層之上,用戶不可見。
axes層
每個子圖,可以繪制各種圖形,例如柱狀圖(bar),餅圖(pie函數(shù)),箱圖(boxplot)等;
設(shè)置每個圖的外觀網(wǎng)格線(grid)的開關(guān)、坐標軸(axis)開關(guān)等;
設(shè)置每個坐標軸(axis)的名字(label)、子圖標題(title)、圖例(legend)等;
設(shè)置坐標軸范圍(scale)、坐標軸刻度(tricks)等;
下圖中具有兩個axes:
一張matplotlib圖的組成
下面這張matplotlib圖包含一張圖的常見元素 ,例如標題、坐標軸、軸標簽、刻度、文本注釋、圖例等。
3、matplotlib兩種畫繪圖方法
方法一:使用matplotlib.pyplot
matplotlib.pyplot簡介
這種繪圖主要使用pyplot模塊,pyplot.py代碼量有3000多行(windows下存儲于xxx\site-packages\matplotlib\pyplot.py),該腳本里面有大量def定義的函數(shù),繪圖時就是調(diào)用pyplot.py中的函數(shù)。
pyplot方法繪圖舉例
#matplotlib.pyplot 接口 import numpy as np import matplotlib.pyplot as plt#導(dǎo)入pyplot,matplotlib.pyplot簡寫為plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.figure(dpi=100) plt.subplot(211) plt.plot(t1, f(t1), color='tab:blue', marker='o') plt.plot(t2, f(t2), color='black') plt.title('demo') plt.subplot(212) plt.plot(t2, np.cos(2*np.pi*t2), color='tab:orange', linestyle='--') plt.suptitle('matplotlib.pyplot api') plt.show()
方法二:面向?qū)ο蠓椒?/h3>
畫比較復(fù)雜的圖形時,面向?qū)ο蠓椒〞奖?。這種繪圖方式主要使用matplotlib的兩個子類:matplotlib.figure.Figure和matplotlib.axes.Axes,畫每張圖時,畫布為matplotlib.figure.Figure的一個實例,每個子圖為matplotlib.axes.Axes的一個實例,分別可以繼承父類的所有方法,也就是說你繪圖時,你想設(shè)置的元素(網(wǎng)格線啊,坐標刻度啊等)都可以在二者的屬性中找出來使用。
matplotlib.figure.Figure
該對象主要用于figure的調(diào)整
matplotlib.axes.Axes
面向?qū)ο蠓椒ɡL圖舉例
import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) fig, axs = plt.subplots(2, dpi=100) #fig為matplotlib.figure.Figure對象的實例figure #axs為matplotlib.axes.Axes對象實例(每個子圖)組成的numpy.ndarray axs[0].plot(t1, f(t1), color='tab:blue', marker='o') axs[0].plot(t2, f(t2), color='black') #兩種設(shè)置標題的方法 #axs[0].set_title('haha')#使用matplotlib.axes.Axes的set_title方法設(shè)置小標題 axs[0].set(title='demo1') axs[1].plot(t2, np.cos(2*np.pi*t2), color='tab:orange', linestyle='--') fig.suptitle('matplotlib object-oriented')#使用matplotlib.figure.Figure中的suptitle方法設(shè)置Figure標題 plt.show()
以上就是詳解Python中matplotlib模塊的繪圖方式的詳細內(nèi)容,更多關(guān)于Python matplotlib繪圖方式的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何利用Python將html轉(zhuǎn)為pdf、word文件
網(wǎng)絡(luò)上存在很多將HTML轉(zhuǎn)換為PDF的軟件和工具,但是大家都知道收費,所以下面這篇文章主要給大家介紹了關(guān)于如何利用Python將html轉(zhuǎn)為pdf、word文件的相關(guān)資料,文中通過示例代碼介紹介紹的非常詳細,需要的朋友可以參考下2022-12-12Python3爬蟲學(xué)習(xí)之爬蟲利器Beautiful Soup用法分析
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之爬蟲利器Beautiful Soup用法,結(jié)合實例形式分析了Beautiful Soup的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-12-12python 實現(xiàn)得到當前時間偏移day天后的日期方法
今天小編就為大家分享一篇python 實現(xiàn)得到當前時間偏移day天后的日期方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python基礎(chǔ)教程之if判斷,while循環(huán),循環(huán)嵌套
這篇文章主要介紹了Python基礎(chǔ)教程之if判斷,while循環(huán),循環(huán)嵌套 的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04Python利用pangu模塊實現(xiàn)文本格式化小工具
其實使用pangu做文本格式標準化的業(yè)務(wù)代碼在之前就實現(xiàn)了,主要能夠?qū)⒅形奈谋疚臋n中的文字、標點符號等進行標準化。但是為了方便起來我們這里使用了Qt5將其做成了一個可以操作的頁面應(yīng)用,需要的可以了解一下2022-10-10