[python][科學(xué)計(jì)算][matplotlib]簡(jiǎn)要使用教程1-繪圖結(jié)構(gòu)

最后一次更新日期: 2019/4/20

Matplotlib 是一個(gè) Python 的 2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。

按需導(dǎo)入以下模塊:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

1. 圖像figure

In [71]: fig=plt.figure(1)
<Figure size 432x288 with 0 Axes>

In [72]: fig=plt.figure(2,figsize=(5,3))
<Figure size 360x216 with 0 Axes>

In [73]: fig.suptitle('title')
Out[73]: Text(0.5,0.98,'title')

Figure是所有繪圖元素的頂級(jí)容器汁针,可以認(rèn)為是一張畫布聊疲,第一個(gè)參數(shù)num設(shè)置圖像的編號(hào)休傍,第二個(gè)figsize參數(shù)設(shè)置圖像大小毫蚓。

Figure.suptitle方法用于設(shè)置圖像的總標(biāo)題(也可通過(guò)plt.suptitle設(shè)置)占键,fontsize參數(shù)可以設(shè)置字體大小昔善,xy參數(shù)設(shè)置位置坐標(biāo)元潘,取值為0.~1.的相對(duì)于Figure的寬和高的比例。

Figure上無(wú)法直接繪圖君仆,需要至少添加一個(gè)Axes翩概,在調(diào)用plt的靜態(tài)方法繪圖時(shí),會(huì)繪制在最近聲明的一個(gè)Figure上返咱,不顯示聲明則會(huì)自動(dòng)按默認(rèn)配置創(chuàng)建FigureAxes钥庇,plt.gcf()方法可以獲取當(dāng)前正在繪制的Figure

Figure.axes可以獲取圖像下的所有Axes咖摹;
Figure.clf()方法可以清空?qǐng)D像评姨。

Artist是matplotlib中所有繪圖對(duì)象的基類,Figure也是繼承自該類萤晴,可在官方文檔查看到完整的繼承關(guān)系吐句。

2. 坐標(biāo)軸axes

x=np.arange(0,720,1)
y1=np.sin(x*np.pi/180)
y2=np.cos(x*np.pi/180)

#方法1
fig=plt.figure(figsize=(7.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_axes((0,0,0.5,0.8),title='ax1')
ax.plot(x,y1)
ax=fig.add_axes((0.6,0,0.5,0.8),title='ax2')
ax.plot(x,y2)
plt.show(fig)
#方法2
fig=plt.figure(figsize=(10.5,3))
fig.suptitle('sin/cos',fontsize=16)
ax=fig.add_subplot(121,title='ax1', projection='3d')
ax.plot(x,y1)
ax=fig.add_subplot(122,title='ax2', projection='3d')
ax.plot(x,y2)
plt.show(fig)

Axes的意思是用于繪圖的坐標(biāo)軸,AxesSubplot是封裝了Axes的子圖店读,通過(guò)不同的方法創(chuàng)建嗦枢,子圖在布局上更方便,繪圖時(shí)則沒(méi)有明顯的區(qū)別屯断,下面會(huì)將Axes也稱作子圖文虏。

繪制不同圖像會(huì)使用不同軸類型,最常用的xy坐標(biāo)軸和xyz坐標(biāo)軸分別為AxesAxes3D殖演。如果只需要一個(gè)Axes氧秘,可以不顯示聲明,直接調(diào)用plt的靜態(tài)方法繪制趴久,Axes會(huì)被自動(dòng)創(chuàng)建(通過(guò)add_subplot(111))丸相。當(dāng)存在多個(gè)Axes時(shí),可以調(diào)用Axes的方法繪圖以保證圖像被繪制在正確的子圖上朋鞍,調(diào)用靜態(tài)方法繪制時(shí)實(shí)際上是通過(guò)plt.gca()獲取了最后聲明的Axes已添。

Axes.plot是繪圖方法妥箕,用于繪制曲線圖。
Axes在繪圖時(shí)需要提供x,y兩個(gè)軸的坐標(biāo)更舞,而Axes3D需要提供x,y,z三個(gè)軸的坐標(biāo)畦幢,上方的例子中沒(méi)有提供z軸坐標(biāo)所以圖像被繪制在高度為0的一個(gè)平面上。

Axes是綁定在Figure上的缆蝉,可通過(guò)調(diào)用Figureadd_axesadd_subplot方法創(chuàng)建新的Axes或是將已有Axes添加到Figure上宇葱。兩種方法在子圖的大小和位置的設(shè)置上有所區(qū)別,需要相應(yīng)的調(diào)整參數(shù)刊头。
add_axes方法的第一個(gè)參數(shù)rect通過(guò)一個(gè)浮點(diǎn)數(shù)序列設(shè)置Axes的位置和大小黍瞧,格式為(left,bottom,width,height),值均為0.~1.的相對(duì)于Figure的寬和高的比例原杂。
add_subplot方法的前三個(gè)參數(shù)分別設(shè)置區(qū)間劃分的行數(shù)印颤、列數(shù)、以及子圖的索引穿肄,例如2,3,5表示將Figure劃分為2行3列年局,在其中第5個(gè)區(qū)間上添加子圖;前三個(gè)參數(shù)可以替換為單個(gè)3位整數(shù)表示同一含義咸产,但每位的值不得超過(guò)10矢否,例如2,3,5對(duì)應(yīng)235
title參數(shù)用于設(shè)置子圖的標(biāo)題脑溢,也可通過(guò)Axes.set_titleplt.title方法設(shè)置僵朗;
projection參數(shù)設(shè)置投影類型,即坐標(biāo)軸類型屑彻,其中验庙,'rectilinear'表示直線(xy)坐標(biāo)軸,也是默認(rèn)值酱酬,'3d'表示3D(xyz)坐標(biāo)軸壶谒。

除以上兩種方法,還可使用fig,ax_list = plt.subplots(figsize=(10.5,3),ncols=2,nrows=1)快速規(guī)劃畫布膳沽,只需要指定畫布大小汗菜、列劃分?jǐn)?shù)量和行劃分?jǐn)?shù)量,省去寫循環(huán)的時(shí)間挑社。

get_children方法能夠獲取Axes下的所有繪圖元素陨界;
collections屬性能夠獲取所有繪圖元素集合;
如想獲取指定類型的元素痛阻,可使用get_xlabel等方法菌瘪;
cla方法可以清除當(dāng)前軸的內(nèi)容。

3. 顯示show

plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()



plt.show()方法用于顯示已繪制的圖像,一般配合plt的靜態(tài)繪圖方法使用(即不顯示聲明Figure的情況)俏扩。在使用靜態(tài)方法繪圖時(shí)糜工,如果不調(diào)用show,則代碼段的中所有繪圖元素將會(huì)繪制在自動(dòng)創(chuàng)建的同一Figure的同一Axes上录淡。

在ipython中捌木,直接輸入Figure的變量名也可以將其圖像顯示出來(lái);在執(zhí)行一段含繪圖語(yǔ)句的代碼段后嫉戚,也會(huì)自動(dòng)顯示圖像刨裆。

4. 保存save

fig.savefig('D:\\test.jpg')

Figuresavefig方法可以保存圖片至指定路徑,也可調(diào)用plt的靜態(tài)方法保存彬檀,但必須和繪圖的代碼一起執(zhí)行帆啃,且必須在show方法之前執(zhí)行。

ipython中直接右鍵顯示出來(lái)的圖片也有保存的選項(xiàng)窍帝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末努潘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盯桦,更是在濱河造成了極大的恐慌慈俯,老刑警劉巖渤刃,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拥峦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卖子,警方通過(guò)查閱死者的電腦和手機(jī)略号,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洋闽,“玉大人玄柠,你說(shuō)我怎么就攤上這事〗刖耍” “怎么了羽利?”我有些...
    開(kāi)封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)刊懈。 經(jīng)常有香客問(wèn)我这弧,道長(zhǎng),這世上最難降的妖魔是什么虚汛? 我笑而不...
    開(kāi)封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任匾浪,我火速辦了婚禮,結(jié)果婚禮上卷哩,老公的妹妹穿的比我還像新娘蛋辈。我一直安慰自己,他們只是感情好将谊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布冷溶。 她就那樣靜靜地躺著渐白,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逞频。 梳的紋絲不亂的頭發(fā)上礼预,一...
    開(kāi)封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音虏劲,去河邊找鬼托酸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛柒巫,可吹牛的內(nèi)容都是我干的励堡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼堡掏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼应结!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起泉唁,我...
    開(kāi)封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鹅龄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后亭畜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體扮休,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年拴鸵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玷坠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劲藐,死狀恐怖八堡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情聘芜,我是刑警寧澤兄渺,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站汰现,受9級(jí)特大地震影響挂谍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜服鹅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一凳兵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧企软,春花似錦庐扫、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铅辞。三九已至,卻和暖如春萨醒,著一層夾襖步出監(jiān)牢的瞬間斟珊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工富纸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囤踩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓晓褪,卻偏偏與公主長(zhǎng)得像堵漱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涣仿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容