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