第5章 子圖的繪制及坐標(biāo)軸共享_第1頁(yè)
第5章 子圖的繪制及坐標(biāo)軸共享_第2頁(yè)
第5章 子圖的繪制及坐標(biāo)軸共享_第3頁(yè)
第5章 子圖的繪制及坐標(biāo)軸共享_第4頁(yè)
第5章 子圖的繪制及坐標(biāo)軸共享_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章

子圖的繪制及坐標(biāo)軸共享·繪制固定區(qū)域的子圖·繪制自定義區(qū)域的子圖·共享子圖的坐標(biāo)軸·子圖的布局掌握掌握掌握

學(xué)習(xí)目標(biāo)掌握繪制固定區(qū)域的子圖12掌握繪制自定義區(qū)域的子圖掌握共享子圖的坐標(biāo)軸34掌握子圖的布局目錄頁(yè)5.5本章小結(jié)5.1繪制固定區(qū)域的子圖5.2繪制自定義區(qū)域的子圖5.3共享子圖的坐標(biāo)軸5.4子圖的布局目錄頁(yè)5.5本章小結(jié)5.1繪制固定區(qū)域的子圖5.2繪制自定義區(qū)域的子圖5.3共享子圖的坐標(biāo)軸5.4子圖的布局5.1.1繪制單子圖用戶為了能深入理解數(shù)據(jù)的含義,通常會(huì)將數(shù)據(jù)以一組相關(guān)圖表的形式并排地顯示到同一平面上,以便于從多個(gè)角度比較和分析數(shù)據(jù)?;谏鲜鲂枨?,matplotlib提供了一些將整個(gè)畫布規(guī)劃成若干區(qū)域,以及在指定區(qū)域上繪制子圖(指每個(gè)區(qū)域上的圖表)的功能。matplotlib可以將整個(gè)畫布規(guī)劃成等分布局的m*n(行*列)的矩陣區(qū)域,并按照先行后列的方式對(duì)每個(gè)區(qū)域進(jìn)行編號(hào)(編號(hào)從1開始),之后在選中的某個(gè)或某些區(qū)域中繪制單個(gè)或多個(gè)子圖。5.1.1繪制單子圖畫布被規(guī)劃成3*2的矩陣區(qū)域及編號(hào)的示意圖。5.1.1繪制單子圖使用pyplot模塊的subplot()函數(shù)可以在規(guī)劃好的某個(gè)區(qū)域中繪制單個(gè)子圖。subplot(nrows,ncols,index,projection,polar,sharex,sharey,label,

**kwargs)nrows:表示規(guī)劃區(qū)域的行數(shù)。ncols:表示規(guī)劃區(qū)域的列數(shù)。index:表示選擇區(qū)域的索引,默認(rèn)從1開始編號(hào)。projection:表示子圖的投影類型。polar:表示是否使用極坐標(biāo),默認(rèn)值為False。若參數(shù)polar設(shè)為True,則作用等同于projection='polar'。語(yǔ)法5.1.1繪制單子圖參數(shù)nrows、ncols、index既支持單獨(dú)傳參,也支持以一個(gè)3位整數(shù)(每位整數(shù)必須小于10)的形式傳參。subplot()函數(shù)會(huì)返回一個(gè)

Axes類的子類SubplotBase的對(duì)象。Figure類對(duì)象可以使用add_subplot()方法繪制單子圖,此方式與subplot()函數(shù)的作用是等價(jià)的。多學(xué)一招:JupyterNotebook的繪圖模式當(dāng)JupyterNotebook工具運(yùn)行matplotlib程序時(shí),默認(rèn)會(huì)以靜態(tài)圖片的形式顯示運(yùn)行結(jié)果,此時(shí)的圖片不支持放大或縮小等交互操作。JupyterNotebook支持兩種繪圖模式,分別為控制臺(tái)繪圖和彈出窗繪圖。多學(xué)一招:JupyterNotebook的繪圖模式控制臺(tái)繪圖是默認(rèn)模式,該模式是將繪制的圖表以靜態(tài)圖片的形式顯示,具有便于存儲(chǔ)圖片、不支持用戶交互的特點(diǎn)。開發(fā)者可以在matplotlib程序中添加“%matplotlibinline”語(yǔ)句,通過(guò)控制臺(tái)來(lái)顯示圖片??刂婆_(tái)繪圖多學(xué)一招:JupyterNotebook的繪圖模式彈出窗繪圖模式是將繪制的圖表以彈出窗口的形式顯示,具有支持用戶交互、支持多種圖片存儲(chǔ)格式的特點(diǎn)。開發(fā)者可以在matplotlib程序中添加“%matplotlibauto”或“%matplotlibnotebook”語(yǔ)句,通過(guò)彈出窗口來(lái)顯示圖片。彈出窗繪圖多學(xué)一招:JupyterNotebook的繪圖模式matplotlib程序添加完設(shè)置繪圖模式的語(yǔ)句后,很有可能出現(xiàn)延遲設(shè)置繪圖模式的現(xiàn)象。因此這里建議大家重啟服務(wù),即在JupyterNotebook工具的菜單欄中選擇【Kernel】->【Restart】,之后在彈出的“重啟服務(wù)?”窗口中選擇【重啟】即可。本實(shí)例要求根據(jù)下表的數(shù)據(jù),先將畫布規(guī)劃成2*1的矩陣區(qū)域,并在索引為1的區(qū)域中繪制反映產(chǎn)品A和產(chǎn)品B銷售額趨勢(shì)的折線圖;再將畫布規(guī)劃成2*2的矩陣區(qū)域,并在索引為3的區(qū)域中繪制反映產(chǎn)品A銷售額占比的餅圖;最后將畫布規(guī)劃成2*2的矩陣區(qū)域,并在索引為4的區(qū)域中繪制反映產(chǎn)品B銷售額占比的餅圖。5.1.2實(shí)例1:某工廠產(chǎn)品A與產(chǎn)品B去年的銷售額分析由圖可知,通過(guò)在同一畫布中顯示多個(gè)子圖的方式可以從多個(gè)角度傳遞數(shù)據(jù)的信息。5.1.2實(shí)例1:某工廠產(chǎn)品A與產(chǎn)品B去年的銷售額分析規(guī)劃2*1的矩陣區(qū)域,選中索引為1的區(qū)域規(guī)劃2*2的矩陣區(qū)域,分別選中索引為3、4的區(qū)域5.1.3繪制多子圖使用pyplot模塊的subplots()函數(shù)可以在規(guī)劃好的所有區(qū)域中一次繪制多個(gè)子圖。subplots(nrows=1,ncols=1,sharex=False,sharey=False,squeeze=True,subplot_kw=None,gridspec_kw=None,**fig_kw)nrows:表示規(guī)劃區(qū)域的行數(shù),默認(rèn)為1。ncols:表示規(guī)劃區(qū)域的列數(shù),默認(rèn)為1。sharex,sharey:表示是否共享子圖的x軸或y軸。語(yǔ)法subplots()函數(shù)會(huì)返回包含兩個(gè)元素的元組,其中該元組的第一個(gè)元素為Figure對(duì)象,第二個(gè)元素為Axes對(duì)象或Axes對(duì)象數(shù)組。隨著人們生活水平的提高,許多人都會(huì)在家里養(yǎng)一些萌寵,有時(shí)還會(huì)在抖音上分享萌寵日常的可愛視頻。5.1.4實(shí)例2:部分國(guó)家養(yǎng)貓與養(yǎng)狗人群比例分析5.1.4實(shí)例2:部分國(guó)家養(yǎng)貓與養(yǎng)狗人群比例分析本實(shí)例要求根據(jù)下表的數(shù)據(jù),將整個(gè)畫布規(guī)劃成1*2的矩陣區(qū)域,并在索引為1和索引為2的區(qū)域中分別繪制反映養(yǎng)貓人群比例與養(yǎng)狗人群比例的條形圖

。5.1.4實(shí)例2:部分國(guó)家養(yǎng)貓與養(yǎng)狗人群比例分析由圖可知,俄羅斯養(yǎng)貓人群的比例最高,墨西哥養(yǎng)狗人群的比例最高。規(guī)劃1*2的矩陣區(qū)域,依次在每個(gè)區(qū)域中繪制子圖目錄頁(yè)5.5本章小結(jié)5.1繪制固定區(qū)域的子圖5.2繪制自定義區(qū)域的子圖5.3共享子圖的坐標(biāo)軸5.4子圖的布局5.2.1繪制單子圖使用pyplot模塊的subplot2grid()函數(shù)可以將整個(gè)畫布規(guī)劃成非等分布局的區(qū)域,并可在選中的某個(gè)區(qū)域中繪制單個(gè)子圖。subplot2grid(shape,

loc,

rowspan=1,

colspan=1,

fig=None,

**kwargs)shape:表示規(guī)劃的區(qū)域結(jié)構(gòu),該參數(shù)接收一個(gè)包含兩個(gè)整型數(shù)據(jù)的元組,元組中第1個(gè)元素表示規(guī)劃區(qū)域的行數(shù),第2個(gè)元素代表規(guī)劃區(qū)域的列數(shù)。loc:表示選擇區(qū)域的位置,該參數(shù)接收一個(gè)包含兩個(gè)整型數(shù)據(jù)的元組,元組中第1個(gè)元素表示子圖所在的行數(shù)(行數(shù)從0開始),第2個(gè)元素表示子圖所在的列數(shù)(列數(shù)從0開始)。rowspan:表示向下跨越的行數(shù),默認(rèn)為1。colspan:表示向右跨越的列數(shù),默認(rèn)為1。語(yǔ)法抖音是一款音樂(lè)創(chuàng)意短視頻社交軟件,該軟件自2016年9月上線以來(lái)受到越來(lái)越多年輕人的歡迎。用戶可以通過(guò)這款軟件選擇歌曲,拍攝音樂(lè)短視頻,生成自己的作品。5.2.2實(shí)例3:2017年與2018年抖音用戶分析本實(shí)例要求根據(jù)下表的數(shù)據(jù),使用3個(gè)子圖進(jìn)行展示:在第0~1行第0~1列的區(qū)域中,繪制說(shuō)明2018年相比于2017年人群增長(zhǎng)倍數(shù)的柱形圖;在第2行第0列、第2行第1列的區(qū)域中,分別繪制說(shuō)明2017年、2018年抖音用戶地區(qū)分布比例的餅圖。5.2.2實(shí)例3:2017年與2018年抖音用戶分析5.2.2實(shí)例3:2017年與2018年抖音用戶分析第0~1行第0~1列的區(qū)域第2行第0列的區(qū)域第2行第1列的區(qū)域目錄頁(yè)5.5本章小結(jié)5.1繪制固定區(qū)域的子圖5.2繪制自定義區(qū)域的子圖5.3共享子圖的坐標(biāo)軸5.4子圖的布局當(dāng)使用subplots()函數(shù)繪制子圖時(shí),可以通過(guò)該函數(shù)的sharex或sharey參數(shù)控制是否共享x軸或y軸。sharex或sharey參數(shù)支持False或'none'、True或'all'、'row'、'col'中任一取值。5.3.1共享相鄰子圖的坐標(biāo)軸True或'all':表示所有子圖之間共享x軸或y軸。False或'none':表示所有子圖之間不共享x軸或y軸。'row':表示每一行的子圖之間共享x軸或y軸。'col':表示每一列的子圖之間共享x軸或y軸。5.3.1共享相鄰子圖的坐標(biāo)軸'all'—所有子圖共享x軸'none'—所有子圖不共享x軸row:每行子圖共享x軸col:每列子圖共享x軸5.3.2共享非相鄰子圖的坐標(biāo)軸當(dāng)使用pyplot的subplot()函數(shù)繪制子圖時(shí),也可以將代表其它子圖的變量賦值給該函數(shù)的sharex或sharey參數(shù),此時(shí)可以共享非相鄰子圖之間的坐標(biāo)軸。單個(gè)子圖也可以共享坐標(biāo)軸,它通常會(huì)將y軸作為一組圖形參考的坐標(biāo)軸,將右側(cè)的垂直坐標(biāo)軸作為另一組圖形參考的坐標(biāo)軸。多學(xué)一招:共享同一子圖的坐標(biāo)軸多學(xué)一招:共享同一子圖的坐標(biāo)軸twinx()函數(shù)用于共享同一子圖的坐標(biāo)軸。twinx()函數(shù)會(huì)返回共享x軸的新繪圖區(qū)域(Axes類的對(duì)象),新創(chuàng)建的繪圖區(qū)域具有不可見的x軸和獨(dú)立的、位于右側(cè)的y軸。twinx(ax=None)以上函數(shù)的ax函數(shù)表示要共享坐標(biāo)軸的子圖。語(yǔ)法5.3.3實(shí)例4:某地區(qū)全年氣溫和水量的關(guān)系氣候是地球上某一地區(qū)大氣的多年平均狀況,主要有光照、氣溫、降水等氣候要素,其中氣溫、降水是反映一個(gè)地區(qū)氣候特征的重要指標(biāo)。5.3.3實(shí)例4:某地區(qū)全年氣溫和水量的關(guān)系本實(shí)例要求根據(jù)下表的數(shù)據(jù),將月份列的數(shù)據(jù)作為x軸的刻度標(biāo)簽,將平均氣溫、降水量、蒸發(fā)量三列的數(shù)據(jù)作為y軸的數(shù)據(jù),在同一繪圖區(qū)域中分別繪制反映平均氣溫、降水量、蒸發(fā)量關(guān)系的圖表

。5.3.3實(shí)例4:某地區(qū)全年氣溫和水量的關(guān)系由圖可知,隨著氣溫的升高,蒸發(fā)量也有所增加,降水量與蒸發(fā)量大致相等。折線圖參照的坐標(biāo)軸堆積柱形圖參照的坐標(biāo)軸目錄頁(yè)5.5本章小結(jié)5.1繪制固定區(qū)域的子圖5.2繪制自定義區(qū)域的子圖5.3共享子圖的坐標(biāo)軸5.4子圖的布局5.4.1約束布局當(dāng)帶有標(biāo)題的多個(gè)子圖并排顯示時(shí),多個(gè)子圖會(huì)因區(qū)域過(guò)于緊湊而出現(xiàn)標(biāo)題和坐標(biāo)軸之間相互重疊的問(wèn)題,而且子圖元素的擺放過(guò)于緊湊,影響用戶的正常查看。matplotlib中提供了一些調(diào)整子圖布局的方法,包括約束布局、緊密布局和自定義布局,通過(guò)這些方法可以合理布局多個(gè)子圖。5.4.1約束布局什么是約束布局?5.4.1約束布局約束布局是指通過(guò)一系列限制來(lái)確定畫布中元素的位置的方式,它預(yù)先會(huì)確定一個(gè)元素的絕對(duì)定位,之后以該元素的為基點(diǎn)將其它元素進(jìn)行絕對(duì)定位,從而靈活地定位和調(diào)整元素的位置。5.4.1約束布局matplotlib在繪制多子圖時(shí)默認(rèn)并未啟用約束布局,它提供了兩種方式啟用約束布局:第一種方式是使用subplots()或figure()函數(shù)的constrained_layout參數(shù),第二種方式是修改figure.constrained_layout.use配置項(xiàng)。

5.4.1約束布局第1種在使用subplots()或figure()函數(shù)創(chuàng)建子圖或畫布時(shí),可以將這些函數(shù)的constrained_layout參數(shù)的值設(shè)置為True,以啟用約束布局來(lái)調(diào)整圖表元素的位置。plt.subplots(constrained_layout=True)示例第2種matplotlib可以通過(guò)rcParams字典或rc()函數(shù)修改figure.constrained_layout.use配置項(xiàng)的值為True,以啟用約束布局來(lái)調(diào)整圖表元素的位置。plt.rcParams['figure.constrained_layout.use']=True示例5.4.1約束布局除此之外,通過(guò)以下配置項(xiàng)或者是Figure類對(duì)象的方法可以使用約束布局或者手動(dòng)調(diào)整子圖的內(nèi)邊距。figure.constrained_layout.w_pad/h_pad:表示繪圖區(qū)域的內(nèi)邊距。figure.constrained_layout.wspace/hspace:表示子圖之間的間隙,默認(rèn)為

0.02。set_constrained_layout():設(shè)置是否使用約束布局。若該方法傳入?yún)?shù)None,則說(shuō)明使用配置文件中rcParams['figure.constrained_layout.use']指定的值。set_constrained_layout_pads():設(shè)置子圖的內(nèi)邊距。5.4.1約束布局約束布局僅適用于調(diào)整刻度標(biāo)簽、軸標(biāo)簽、標(biāo)題和圖例的位置,而不會(huì)調(diào)整子圖其他元素的位置。因此,使用約束布局后的子圖之間仍然會(huì)出現(xiàn)圖表元素被裁剪或重疊的問(wèn)題。5.4.2緊密布局什么是緊密布局?5.4.2緊密布局緊密布局采用緊湊的形式將子圖排列到畫布中,僅適用于刻度標(biāo)簽、坐標(biāo)軸標(biāo)簽和標(biāo)題位置的調(diào)整。pyplot中提供了兩種實(shí)現(xiàn)緊密布局的方式。第一種:使用tight_layout()函數(shù)。第二種:修改figure.autolayoutrcParam

配置項(xiàng)。5.4.2緊密布局matplotlib在1.1版本中引入了tight_layout()函數(shù),通過(guò)該函數(shù)可以調(diào)整子圖的內(nèi)邊距及子圖的間隙,使子圖能適應(yīng)畫布的繪圖區(qū)域。使用tight_layout()函數(shù)tight_layout(pad=1.08,

h_pad=None,

w_pad=None,

rect=None)

語(yǔ)法pad:表示畫布邊緣與子圖邊緣之間的空白區(qū)域的大小,默認(rèn)為1.08。h_pad,w_pad:表示相鄰子圖之間的空白區(qū)域的大小。rect:表示調(diào)整所有子圖位置的矩形區(qū)域的四元組(left,bottom,right,top),默認(rèn)為

(0,0,1,1)。當(dāng)pad參數(shù)設(shè)為0時(shí),空白區(qū)域的文本會(huì)出現(xiàn)被裁剪的現(xiàn)象,之所以產(chǎn)生文本部分缺失的情況,可能是因?yàn)樗惴ㄥe(cuò)誤或受到算法的限制。因此,官方建議pad參數(shù)的取值應(yīng)至少大于0.3。

5.4.2緊密布局pyplot可以通過(guò)rcParams字典或rc()函數(shù)修改figure.autolayoutrcParam配置項(xiàng)的值為True,使子圖元素能適應(yīng)畫布的繪圖區(qū)域。修改figure.autolayoutrcParam

配置項(xiàng)plt.rcParams['figure.autolayoutrcParam']=True示例matplotlib的gridspec模塊是專門指定畫布中子圖位置的模塊,該模塊中包含一個(gè)GridSpec類,通過(guò)顯式地創(chuàng)建GridSpec類對(duì)象來(lái)自定義畫布中子圖的布局結(jié)構(gòu),使得子圖能夠更好地適應(yīng)畫布。5.4.3自定義布局GridSpec(nrows,

ncols,

figure=None,

left=None,

bottom=None,

right=None,

top=None,

wspace=None,

hspace=None,

width_ratios=None,

height_ratios=None)nrows:表示行數(shù)。ncols:表示列數(shù)。figure:表示布局的畫布。語(yǔ)法left,bottom,right,top:表示子圖的范圍。wspace:表示子圖之間預(yù)留的寬度量。hspace:表示子圖之間預(yù)留的高度量。5.4.3自定義布局GridSpec類對(duì)象的使用方式與數(shù)組的使用方式相似,它采用索引或切片的形式訪問(wèn)每個(gè)布局元素。matplotlib中還為Figure對(duì)象提供了快速添加布局結(jié)構(gòu)的方法add_gridspec()。5

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論