溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

matplotlib.pyplot與axes有什么關(guān)系

發(fā)布時(shí)間:2021-01-18 15:57:36 來源:億速云 閱讀:217 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)matplotlib.pyplot與axes有什么關(guān)系,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

1.通過plt.xxx()直接繪圖

就像各種教程和書上的常規(guī)操作一樣,我們可以用plt.plot(), plt.bar()等繪制不同類型的圖(部分總結(jié)如下表)

表一 plt中用于繪圖的部分函數(shù)

函數(shù)名作用
plt.bar()條形圖
plt.barh()橫排條形圖
plt.boxplot()箱線圖(plt.box()是另一個(gè)函數(shù))
plt.hist()頻率直方圖
plt.plot()折線圖

我們可以用plt的其他一些函數(shù)來對(duì)圖表的標(biāo)題等進(jìn)行設(shè)置(部分總結(jié)如下表)

表二 plt中用于設(shè)置的部分函數(shù)

函數(shù)名作用
plt.title()設(shè)置圖表標(biāo)題
plt.grid()設(shè)置圖表網(wǎng)格
plt.xlabel();plt.ylabel設(shè)置x;y軸標(biāo)題
plt.xticks();plt.yticks()設(shè)置x;y軸刻度
plt.xlim();plt.ylim()設(shè)置x;y軸范圍
plt.annotate()設(shè)置標(biāo)注

(具體的參數(shù)和用法詳見 https://matplotlib.org/api/pyplot_summary.html )

用plt繪圖的方便之處,同樣也是它最令人迷惑的地方,就是它沒有一個(gè)顯性的對(duì)象。
我們甚至可以調(diào)用pandas繪圖以后,用表二中的plt函數(shù)來對(duì)pandas生成的這個(gè)圖表進(jìn)行設(shè)置。

例程如下:

import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#注意下一行的對(duì)象是'data',它是一個(gè)series對(duì)象,調(diào)用的是pandas繪圖函數(shù)
data.plot(label='income', color = 'r', linestyle=':', marker = 's')#具體的pandas繪圖之后會(huì)細(xì)講
#但接下來我們甚至可以調(diào)用plt的函數(shù)對(duì)它進(jìn)行設(shè)置
plt.title('Income chart')
plt.xlabel('Year')
plt.ylabel('income')
plt.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->'))
plt.show()

matplotlib.pyplot與axes有什么關(guān)系

上面這個(gè)例子就展示了pyplot(plt)的特點(diǎn),不用指明對(duì)象就能進(jìn)行畫圖和設(shè)置,當(dāng)我們?cè)谕粋€(gè)程序中的圖比較少的時(shí)候這是方便的,但當(dāng)我們同一個(gè)程序中的圖很多的時(shí)候,這種沒有顯性對(duì)象的方式會(huì)導(dǎo)致我們沒有辦法重新調(diào)用之前的圖(因?yàn)闆]有對(duì)象名)也會(huì)給人一種很不踏實(shí)的感覺。

2.實(shí)例化figure和axes對(duì)象后繪圖

就像前文提到的,plt只是一個(gè)接口而不是對(duì)象。
在matplotlib中,有兩個(gè)重要的對(duì)象類型:figure對(duì)象可以把它想成一張空白圖紙,在上面可以繪制一個(gè)或多個(gè)axes對(duì)象(還可以有其他對(duì)象等)。axes對(duì)象是一個(gè)圖像的主要部分(它包括了圖線、xy軸等部分)。
我們可以使用plt接口生成figure對(duì)象和axes對(duì)象,然后對(duì)axes對(duì)象調(diào)用方法來實(shí)現(xiàn)畫圖和設(shè)置。
總體思路是:

  1. 實(shí)例化figure對(duì)象

  2. 實(shí)例化axes對(duì)象

  3. 對(duì)axes對(duì)象調(diào)用方法進(jìn)行畫圖和設(shè)置

例程如下:

import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#調(diào)用plt接口,實(shí)例化figure1對(duì)象
figure1 = plt.figure(facecolor='w')#faceclolr設(shè)置背景顏色
#實(shí)例化ax1對(duì)象
ax1 = figure1.add_subplot(111)#ax1是figure1的第1行第一列的第1張圖表
#注意下一行的對(duì)象是'ax1',它是一個(gè)axes對(duì)象,調(diào)用的是matplotlib.axes繪圖函數(shù)
ax1.plot(data,label='income', color = 'r', linestyle=':', marker = 's')
#接下來我們調(diào)用ax1的方法對(duì)它進(jìn)行設(shè)置
ax1.set_title('Income chart')
ax1.set_xlabel('Year')
ax1.set_ylabel('income')
ax1.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->'))

matplotlib.pyplot與axes有什么關(guān)系

用這種方式畫出來的圖,每一個(gè)對(duì)象都有它自己的名字,方便后面繼續(xù)調(diào)用、修改。代碼也就多了兩行實(shí)例化的過程,并沒有麻煩很多,個(gè)人很喜歡用這種方式畫圖(也給人一種很踏實(shí)的感覺)。

類比上面的表一和表二,給出對(duì)于axes對(duì)象的方法函數(shù)表:

表三 axes對(duì)象用于繪圖的部分方法函數(shù)

函數(shù)名作用
ax.bar()條形圖
ax.barh()橫排條形圖
ax.boxplot()箱線圖
ax.hist()頻率直方圖
ax.plot()折線圖

表四 axes對(duì)象中用于設(shè)置的部分方法函數(shù)

函數(shù)名作用
ax.set_title()設(shè)置圖表標(biāo)題
ax.set_xlabel(); ax.set_ylabel設(shè)置x;y軸標(biāo)題
ax.set_xticks(); ax.set_yticks()設(shè)置x;y軸刻度
ax.set_xlim(); ax.set_ylim()設(shè)置x;y軸范圍
ax.annotate()設(shè)置標(biāo)注

(具體的參數(shù)和用法詳見 https://matplotlib.org/api/axes_api.html )

注意表一和表三,表二和表四的異同:

  1. 表一表二中的plt是固定的名字,不論畫什么都是plt.xxx(),而表三和表四中ax.xxx()中的ax要改成你實(shí)例的對(duì)象名。

  2. 注意對(duì)比表二和表四,很多作用相同的東西,跑到了axes這里要多加一個(gè)set_

關(guān)于matplotlib.pyplot與axes有什么關(guān)系就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI