數(shù)據(jù)可視化 課件 第3章 Matplotlib的進階使用_第1頁
數(shù)據(jù)可視化 課件 第3章 Matplotlib的進階使用_第2頁
數(shù)據(jù)可視化 課件 第3章 Matplotlib的進階使用_第3頁
數(shù)據(jù)可視化 課件 第3章 Matplotlib的進階使用_第4頁
數(shù)據(jù)可視化 課件 第3章 Matplotlib的進階使用_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1數(shù)據(jù)可視化第一章Matplotlib的基本使用第二章Matplotlib的進階使用第三章…第四章目錄Contents…第五章緒論2第三章Matplotlib的進階使用進階設(shè)置進階圖形1234引言擴充功能3引言1.41引言上一章講述了使用Matplotlib繪制基本圖形的方法,幫助用戶掌握了一些常見圖形的函數(shù)使用以及其參數(shù)含義。但是,這樣的簡單圖形顯然不能滿足用戶更復(fù)雜的實際需求。本章重點講解如何對Matplotlib圖形進行更復(fù)雜的設(shè)置,以及如何繪制更復(fù)雜和完善的圖形,使用戶能夠更美觀、更全面、更靈活地展示數(shù)據(jù),真正做到用數(shù)據(jù)講故事。5進階設(shè)置2.62進階設(shè)置72進階設(shè)置——rc參數(shù)的設(shè)置在添加標題的過程中,如果標題為中文,會存在不顯示的問題82進階設(shè)置——rc參數(shù)的設(shè)置

解決辦法是添加以下兩行命令92進階設(shè)置——rc參數(shù)的設(shè)置這就涉及到了rc參數(shù)的相關(guān)問題。實際上,matplotlib使用matplotlibrc(matplotlibresourceconfigurations)配置文件來自定義各種屬性,我們稱之為rc配置或者rc參數(shù)。通過rc參數(shù)可以修改默認的屬性,包括窗體大小、每英寸的點數(shù)、線條寬度、顏色、樣式、坐標軸、坐標和網(wǎng)絡(luò)屬性、文本、字體等。102進階設(shè)置——rc參數(shù)的設(shè)置lines:設(shè)置線條屬性。包括線條顏色、寬度和標記等。patch:填充2D空間的圖形對象。font:字體類別、風格、粗細和大小等。text:文本顏色等。axes:坐標軸的背景顏色、邊緣顏色,刻度線的大小,刻度標簽大小等。xtick、ytick:x軸和y軸刻度線大小、寬度,刻度線顏色、標簽大小等。grid:網(wǎng)格顏色、線條設(shè)置、透明度等。legend:圖例的文本大小,線框風格等。figure:畫布標題大小、粗細,畫布分辨率等。savefig:保存畫布圖像的分辨率、背景顏色等。配置文件matplotlibrc主要包括以下配置要素:112進階設(shè)置——rc參數(shù)的設(shè)置可以通過以下代碼代碼查看這些參數(shù)的默認值122進階設(shè)置——rc參數(shù)的設(shè)置還可以直接查找rc參數(shù)的源文件查看對應(yīng)默認參數(shù)132進階設(shè)置——rc參數(shù)的設(shè)置這樣,就可以通過修改rc參數(shù)這種方式直接修改函數(shù)曲線的顏色、粗細等142進階設(shè)置——rc參數(shù)的設(shè)置回歸到最初解決中文顯示的問題上,除了“SimHei”,還有以下字體與其對應(yīng)的參數(shù)152進階設(shè)置——坐標軸的設(shè)置在正常顯示中文標題后,我們就可以開始對圖形進行美化了。讓我們先來學習坐標軸設(shè)置的相關(guān)操作162進階設(shè)置——坐標軸的設(shè)置坐標軸顏色設(shè)置坐標軸顏色設(shè)置思路如下:獲取坐標軸修改顏色172進階設(shè)置——坐標軸的設(shè)置當前的圖表和子圖可以使用plt.gcf()和plt.gca()獲得,分別代表GetCurrentFigure和GetCurrentAxes。實際上,在pyplot模塊中,許多函數(shù)都是對當前Figure或Axes對象進行操作的。坐標軸顏色設(shè)置182進階設(shè)置——坐標軸的設(shè)置既然可以改變顏色,也可以通過設(shè)置坐標軸顏色為白色,以達到“隱藏”坐標軸的目的。坐標軸顏色設(shè)置192進階設(shè)置——坐標軸的設(shè)置雖然設(shè)置成“white”和“none”看起來都可以達到“隱藏”坐標軸的目的。但二者也存在一定區(qū)別。當figure顏色為黑色時,設(shè)置成“white”還是會顯示出來的,而設(shè)置成“none”還是不會顯示出來。坐標軸顏色設(shè)置202進階設(shè)置——坐標軸的設(shè)置坐標軸刻度的設(shè)置若只想顯示一定范圍內(nèi)的圖形,可以通過xlim和ylim兩個函數(shù)來設(shè)置坐標的顯示范圍,接收的參數(shù)為一個元組。212進階設(shè)置——坐標軸的設(shè)置如果想修改坐標軸刻度的值,可以通過xticks()和yticks()兩個函數(shù)來設(shè)置,接受的參數(shù)為一個列表。坐標軸刻度的設(shè)置222進階設(shè)置——坐標軸的設(shè)置我們也可以將坐標軸刻度用文字來表示,只需要再加入一個列表即可。此時會在第一個列表中進行坐標軸刻度劃分,在第二個列表中找到所需要表達的文字坐標軸刻度的設(shè)置232進階設(shè)置——坐標軸的設(shè)置坐標軸位置的設(shè)置數(shù)學中的x-y直角坐標系,x軸與y軸相交于(0,0)點。在Matplotlib,也可以調(diào)整坐標軸的位置,繪制出x-y直角坐標系下的圖形。實現(xiàn)思路如下:(1)獲取坐標軸。(2)設(shè)置右邊和上方坐標軸顏色為none。(3)將左邊和下方的坐標軸調(diào)至中心處。242進階設(shè)置——坐標軸的設(shè)置坐標軸位置的設(shè)置還可以通過設(shè)置左邊和下方的坐標軸到0點達到同樣的效果252進階設(shè)置——坐標軸的設(shè)置坐標軸標簽的設(shè)置如果想要給x軸或y軸添加名稱,則需要使用函數(shù)xlabel()和ylabel()。同樣可以通過fontsize調(diào)整字體大小,通過color設(shè)置字體顏色等262進階設(shè)置——圖例的設(shè)置在繪圖區(qū)域中可能會出現(xiàn)多個圖形,如果沒有圖例進行區(qū)分,是很難識別出這些圖形的主要內(nèi)容的。因此,對于有兩條及兩條以上曲線的圖形,需要添加圖例進行區(qū)分。在Matplotlib中,通過pyplot.legend()創(chuàng)建圖例,但是需要在繪圖過程中加上labels名稱,如plt.plot(x,y,labels='1')。272進階設(shè)置——圖例的設(shè)置pyplot.legend()常見參數(shù)如下:loc:int或str??蛇x參數(shù)見表3.1,可使用左側(cè)的字符串或者右側(cè)的整型代號。默認為'best',同時,'best'意味會自行調(diào)節(jié)位置以不遮擋內(nèi)容,運行速度相對要慢。若使用了bbox_to_anchor,該項無效。fontsize:設(shè)置圖例字體大小。frameon:設(shè)置圖例的邊框,默認為True,設(shè)置為False時不顯示。title:圖例的標題。shadow:是否為圖例邊框添加陰影。markerfirst:True表示圖例標簽在句柄右側(cè),false反之。markerscale:圖例標記為原圖標記中的多少倍大小。fancybox:是否將圖例框的邊角設(shè)為圓形。framealpha:控制圖例框的透明度。bbox_to_anchor:(橫向看右,縱向看下),如果要自定義圖例位置或者將圖例畫在坐標外邊,使用到的參數(shù)一般配合著ax.get_position()等參數(shù)使用。282進階設(shè)置——參考線/區(qū)域的設(shè)置我們有時需要在圖形中添加參考線或參考區(qū)域,以對數(shù)據(jù)進行比較。例如,在對營業(yè)收入進行分析時,會用到帕累托分析,找出營業(yè)收入超過80%的點。292進階設(shè)置——參考線/區(qū)域的設(shè)置參考線的設(shè)置在Matplotlib中,通過pyplot.axhline()繪制平行于x軸的水平參考線,通過pyplot.axvline()繪制平行于y軸的垂直參考線。302進階設(shè)置——參考線/區(qū)域的設(shè)置y:水平參考線的出發(fā)點。xmin&xmax:x最?。ㄗ畲螅┛潭人及俜直龋≈捣秶鸀閇0,1]。如:設(shè)置xmin=0.5,即為參考線起始處到左坐標軸的距離占50%。缺省時繪制平行于整個坐標軸的參考線。c:參考線的顏色。ls:參考線的線條風格。lw:參考線的寬度。其中axhline()常見參數(shù)如下:參考線的設(shè)置312進階設(shè)置——參考線/區(qū)域的設(shè)置axvline()和axhline()使用方法基本一致,唯一的區(qū)別在于axhline()繪制的是平行于x軸的參考線,axvline()繪制的是平行于y軸的參考線,因此在參數(shù)上由axhline()中的y,xmin和xmax對應(yīng)變成axvline()中的x,ymin和ymax。參考線的設(shè)置322進階設(shè)置——參考線/區(qū)域的設(shè)置參考線可以滿足一定的需求,但如果需要對整個區(qū)域進行標記的話,用參考線是不夠的,這時就要使用到參考區(qū)域。Matplotlib通過pyplot.axhspan()創(chuàng)建平行于x軸的參考區(qū)域;通過pyplot.axvspan()創(chuàng)建平行于y軸的參考區(qū)域。參考區(qū)域的設(shè)置332進階設(shè)置——參考線/區(qū)域的設(shè)置其中,axhspan()常見參數(shù)如下:xmin&xmax:區(qū)域的左、右坐標對于整個圖表的位置,范圍在0到1之間。缺省時xmin取0,xmax取1。ymin&ymax:區(qū)域的上、下坐標對于整個圖表的位置。同樣可以通過alpha參數(shù)調(diào)整透明度,通過facecolor調(diào)整區(qū)域顏色,通過edgecolor調(diào)整邊框顏色等參考區(qū)域的設(shè)置342進階設(shè)置——參考線/區(qū)域的設(shè)置與axhline()和axvline()類似,axvspan()和axhspan()的唯一區(qū)別在于axvspan()的ymin和ymax在缺省時分別為0和1。參考區(qū)域的設(shè)置需要注意的是,參考區(qū)域和參考線之間還是有區(qū)別的。例如,參考區(qū)域中必選參數(shù)如axhspan()中的ymin和ymax是實際的坐標軸刻度值,范圍不屬于[0,1]。這是我們在繪圖過程中需要十分注意的。352進階設(shè)置——注釋文本的設(shè)置我們在圖形展示中經(jīng)常要展示一些特殊的點,并且要進行標記,這時就需要注釋文本了。在Matplotlib中,注釋文本有兩種方式:text()為無指向型注釋文本,annotate()為指向型注釋文本。362進階設(shè)置——注釋文本的設(shè)置無指向型注釋文本無指向型注釋文本,文如其名,是指沒有指向型的注釋。它通過pyplot.text()創(chuàng)建。基本思想是:1.定位到需要注釋的位置2.添加注釋。372進階設(shè)置——注釋文本的設(shè)置無指向型注釋文本無指向型注釋文本常用參數(shù)如下:x,y:注釋開始的位置坐標。string:表示說明文字。fontsize:表示字體大小。verticalalignment:垂直對齊方式,可選參數(shù)有:[‘center’,‘top’,‘bottom’,‘baseline’]。horizontalalignment:水平對齊方式,可選參數(shù)有:[‘center’,‘right’,‘left’]。wight:字體的粗細,可選參數(shù)有:[‘normal’,‘bold’,‘bolder’,‘lighter’]。bbox:給字體添加框。以字典的形式,可以修改框內(nèi)的顏色、字體顏色、邊框顏色等。382進階設(shè)置——注釋文本的設(shè)置指向型注釋文本無指向型注釋文本對于只有一個圖形的說明性較好,若圖形中包含兩個及以上的函數(shù)曲線,那么指向型注釋文本的效果會更好。在matplotlib中通過pyplot.annotate()創(chuàng)建指向型注釋文本。實現(xiàn)思路是:1.定位被注釋的坐標點2.定位注釋文本的坐標點3.添加注釋。392進階設(shè)置——注釋文本的設(shè)置指向型注釋文本指向型注釋文本常用參數(shù)如下:s:為注釋文本內(nèi)容xy:為被注釋的坐標點xytext:為注釋文字的坐標位置arrowprops:設(shè)置指向箭頭的參數(shù),包含:arrowstyle:設(shè)置箭頭的樣式,可選參數(shù):['->','|-|','-|>','simple','fancy']等;connectionstyle:設(shè)置箭頭的形狀可選參數(shù)['arc3','arc','angle','angle3'];color:設(shè)置箭頭顏色。headlength:箭頭的長度。headwidth:箭頭的寬度。width:箭尾的寬度。若指定了arrowstyle,則不能通過這三個參數(shù)個性化設(shè)置箭頭。bbox:為注釋文本添加邊框。40進階圖形3.413進階圖形423進階圖形——復(fù)雜柱形圖復(fù)雜柱形圖包括很多種,本章從并列柱形圖、堆積柱形圖、誤差棒柱形圖來講解復(fù)雜柱形圖的繪制思路、流程以及代碼實現(xiàn)。433進階圖形——復(fù)雜柱形圖并列柱形圖當對多個樣本進行某個因素的比較時,如對多個班級某次考試的語數(shù)英三門成績平均分進行比較時,就可以用到并列柱形圖。繪制思路如下:(1)繪制第一個班級的語數(shù)英成績柱形圖;(2)間隔一定的距離繪制第二個班級的語數(shù)英成績柱形圖,以此類推;(3)補充x、y軸名稱,完善圖形443進階圖形——復(fù)雜柱形圖堆積柱形圖堆積柱形圖,即將若干柱形圖堆疊起來的統(tǒng)計圖形。它也可以類似于餅圖展示數(shù)據(jù)的分布。繪制思路如下:(1)繪制第一個柱形圖;(2)以第一個柱形圖為底繪制第二個柱形圖,以此類推;(3)完善圖形。453進階圖形——復(fù)雜柱形圖堆積柱形圖如果想要繪制能夠反映數(shù)據(jù)的百分比分布的堆積柱形圖,則需要先計算百分比值,再繪制圖形。463進階圖形——復(fù)雜柱形圖誤差棒柱形圖在前一章講過了誤差棒圖的繪制。誤差棒圖實際上還可以和柱形圖結(jié)合使用,需要在pyplot.bar()中補充一些參數(shù),補充參數(shù)含義如下:xerr,yerr:分別針對水平型、垂直型誤差。error_kw:設(shè)置誤差記號的相關(guān)參數(shù),例如,elinewidth設(shè)置線型粗細,ecolor設(shè)置顏色,capsize設(shè)置誤差線邊界橫線的長度。473進階圖形——復(fù)雜條形圖復(fù)雜條形圖如并列條形圖、堆積條形圖、帶誤差棒的條形圖,其實現(xiàn)過程與復(fù)雜柱形圖相比沒有很大的區(qū)別,基本上和柱形圖與條形圖的繪制流程一致,此處不再贅述。本小節(jié)主要介紹如何通過條形圖達到類似甘特圖的效果。483進階圖形——復(fù)雜條形圖在Matplotlib中通過pyplot.broken_barh()繪制類似甘特圖的間斷條形圖。其中,常用參數(shù)如下:xranges:(xmin,xwidth)組成的數(shù)組,其中xmin是每個起始點的坐標,xwidth是每個塊的寬度。yranges:(ymin,ymax)規(guī)定某一組方塊的y坐標位置,ymin為起始坐標,ymax是寬度。493進階圖形——堆疊圖堆疊圖主要用于顯示部分對整體隨時間的變化關(guān)系,它與餅圖很相似,但是,堆疊圖反映的是數(shù)據(jù)隨著時間的變化關(guān)系。在Matplotlib中通過pyplot.stackplot()繪制堆疊圖。主要參數(shù)如下:x:維度為n的一維數(shù)組;y:2維數(shù)組(維度m×n)或1維數(shù)組的序列(每維1×n)503進階圖形——子圖子圖是將整個畫布劃分成若干塊,再在每一塊上繪制的圖形。在Matplotlib中,有兩種子圖:規(guī)則劃分的子圖與不規(guī)則劃分的子圖。在正式介紹子圖之前,先解釋一個概念。以subplot()為例,subplot(n1,n2,n3)表示將整個畫布劃分成n1×n2的矩陣,該plot為第n3個圖。subplot(n1,n2,n3)也可以寫作subplot(n1n2n3),中間省略逗號也是可以運行成功的,但不提倡這么做。513進階圖形——子圖規(guī)則劃分的子圖通過pyplot.subplot()創(chuàng)建幾何形狀相同的子圖。不過需要記得在調(diào)用pyplot.subplot()前要先調(diào)用pyplot.figure()獲取畫布,才能進行后續(xù)操作。523進階圖形——子圖還可以在整個畫布中顯示奇數(shù)個圖形規(guī)則劃分的子圖533進階圖形——子圖不規(guī)則劃分的子圖在上一節(jié)中,即使繪制的是奇數(shù)個圖形,但還是規(guī)則劃分的。如果想要將畫布不規(guī)則劃分,需要使用函數(shù)pyplot.subplot2grid()。首先對subplot2grid()參數(shù)的含義進行解釋。以subplot2grid((3,3),(1,0),colspan=2,rowspan=2)為例,該命令表示將整個畫布看作3×3的矩陣,該圖形起始于(1,0),占2列2行。其中參數(shù)colspan和rowspan的缺省值為1。543進階圖形——等高線圖等高線圖經(jīng)常用在繪制梯度下降算法的相關(guān)示意圖中。在Matplotlib中通過pyplot.contour()繪制等高線。繪制等高線最基本、最重要的三個參數(shù)是長、寬、高,對應(yīng)x、y和z。553進階圖形——等高線圖如果需要的是填充等高線,使用命令pyplot.contourf()563進階圖形——熱力圖熱力圖,也可以稱作熱圖、密度表等,主要用于展示數(shù)據(jù)的分布情況。標準的熱力圖由三個維度的數(shù)據(jù)組成,兩組連續(xù)的數(shù)據(jù)作為x軸和y軸,第三組數(shù)據(jù)通過顏色深淺程度反映。熱力圖在機器學習中的使用頻率較高。Matplotlib中繪制熱力圖需要使用到兩個函數(shù)—pyplot.imshow()和pyplot.colorbar()573進階圖形——熱力圖其中,imshow()的cmap用來修改色系,有以下參數(shù):hot:從黑色平滑過度到紅色、橙色和黃色的背景色,然后到白色。cool:包含青綠色和品紅色的陰影色。從青綠色平滑變化到品紅色。gray:返回線性灰度色圖。

溫馨提示

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

評論

0/150

提交評論