




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章Matplotlib基礎及應用主講人:***13-10月-23Python數據分析與數據挖掘目錄contentsMatplotlib簡介0102Matplotlib基礎知識03Pyplot的使用04Pyplot中的常用圖形Matplotlib簡介017.1.1
Matplotlib主要特性 Matplotlib是一個常用的Python繪圖庫,常與NumPy和Pandas一起結合使用,它以各種格式和跨平臺的交互環境生成可達到印刷質量的圖形。Matplotlib可用于Python腳本、Python和IPythonshell、JupyterNotebook、Web應用程序服務器和四個圖形用戶界面工具包。 Matplotlib具有良好的操作系統兼容性和圖形顯示底層接口兼容性,并支持幾十種圖形顯示接口與輸出格式,是Python中繪制二維、三維圖表的重要可視化工具。新版的Matplotlib可以輕松實現主流的繪圖風格,其中加入了許多新的程序包,實現了更加簡潔新穎的API,例如Seaborn、ggplot、HoloViews、Altair和Pandas對Matplotlib的API封裝的繪圖功能。其主要特點:使用簡單繪圖語句實現復雜繪圖效果;以交互式操作實現漸趨精細的圖形效果;對圖表的組成元素實現精細化控制;使用嵌入式的LaTeX輸出具有印刷級別的圖表、科學表達式和符號文本。7.1.2Matplotlib安裝python-mpipinstall-Upippython-mpipinstall-Umatplotlib
對于Windows、MacOS和普通Linux平臺來說,Anaconda、Canopy和ActiveState都是非常好的選擇。Winpython是Windows用戶的一個選項。這些發行版中已經包含了matplotlib和許多其他有用的(數據)科學工具。其安裝語法如下:
使用時,只需將其導入即可:以plt作為Pyplot子模塊的縮寫。importmatplotlibasmplimportmatplotlib.pyplotaspltMatplotlib基礎知識027.2.1導入Matplotlib
我們在作圖前,需要導入matplotlib和其中的模塊(如matplotlib.pyplot)。通常為了方便,設置一個常用的簡寫形式,本章例子中還需要導入NumPy和Pandas模塊。importmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd7.2.2Matplotlib圖形構成
Matplotlib將數據繪制在圖形(Figure)上,圖形可以理解為包含其他所有繪圖元素的頂級容器,其中包含所有軸(Axes)、其他Artist和畫布(Canvas)。通常情況下,畫布(Canvas)是一個繪圖的對象,對用戶而言,該對象一般不可見。在圖形上看到的一切都是Artist,Artist有兩種類型,即圖形元素(primitives)和容器(containers)。圖形元素是我們需要加入Canvas的元素,比如線條、矩形、文字等,而容器是放置這些元素的地方,例如Axis、Axes和Figure,其中Figure是頂層的Artist。1、圖形(Figure)[例7-1]使用figure()方法創建新圖形。
軸(Axes)是matplotlibAPI中重要的類,這是因為軸是大多數對象所在的繪圖區域。在創建Figure對象之后,在作圖前需要創建軸,軸是繪圖基準,是圖像中帶數據空間的區域。如果將Figure理解為容器,即畫布的載體,則具體的繪圖操作是在畫紙上完成,畫紙可以理解為子圖Subplot或更加靈活的子圖--軸(Axes)。2、軸(Axes)7.2.2Matplotlib圖形構成[例7-2]本例首先生成一個空白Figure,然后創建1行2列的子圖,返回子圖的軸對象ax1和ax2。在第1個子圖的軸對象ax1上添加軸線標簽X-Axis和Y-Axis,并設置軸線的數據范圍:X為[0,5],Y為[-2,2]。
軸線是類似數字線的對象,是軸上的刻度。它們負責設置圖形范圍并生成記號(軸上的標記)和記號標簽(標記記號的字符串)。一般情況下,圖中可以包含兩個或三個軸線對象(三維圖),它們負責處理數據范圍。可以使用plt.axis()或plt.xlim()等函數設置軸線范圍,plt.xlabel()或者plt.ylabel()等為軸線命名,同時也可利用tick的相關方法對軸上的刻度進行修改。3、軸線(Axis)7.2.2Matplotlib圖形構成[例7-3]設置軸線實例。圖Figure、Axes和Axis的關系
圖例是展現圖表中數據組列表并通過提供線索(線條樣式或顏色)來讓數據組更易于識別。圖例的設置與修改是通過調用legend()來實現。4、圖例(legend)5、標題(title)
標題是對整個圖標的說明,方便對整個圖表含義的理解,通過調用plt.title()方法來實現對title內容的設置。6、網格(Grid)
有時需要在圖形中添加網格,網格線方便看到圖表中每個元素的精確值,而且也方便執行單點之間的對比。但是網格也會增加噪聲,讓看到實際的數據流變得困難。一般情況下,默認狀態下無網格線,可以通過調用grid()方法實現。7.2.2Matplotlib圖形構成7、圖形主體內容
圖形的主體內容是一張圖的核心,對于二維圖表而言,圖形的主體內容可以是點,也可以是線條等。對應的方法分別是點(scatter、plot)、線(line、plot)等。7.2.2Matplotlib圖形構成[例7-4]添加了網格、圖例的繪圖實例。 Matplotlib默認狀態下無法顯示中文,在前面的許多例子中各種標題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進行操作。方法一:借助rcParams修改字體實現設置
其中,rcParams[‘font.family’]的種類也可以設置多種。屬性說明‘font.family’用于顯示字體的名字‘font.style’字體風格,正常‘normal’或斜體‘italic’‘font.size’字體大小,整數字號或者‘large’、‘x‐small’rcParams的屬性7.2.3Matplotlib中設置中文中文字體種類 Matplotlib默認狀態下無法顯示中文,在前面的許多例子中各種標題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進行操作。方法一:借助rcParams修改字體實現設置7.2.3Matplotlib中設置中文
可以用下列語句查看matplotlib中默認已經識別到的所有可用字體和對應的文件名,其中部分輸出的為字體名稱,font.fname部分輸出字體文件的路徑和文件名。importmatplotlib.pyplotaspltfrommatplotlibimportfont_managerforfontinfont_manager.fontManager.ttflist:#查看字體名以及對應的字體文件名print(,'--',font.fname)輸出的“KaiTi--C:\Windows\Fonts\simkai.ttf”中,“KaiTi”為字體名,“C:\Windows\Fonts\simkai.ttf”為對應的字體文件。則可以用如下語句來使用該字體,如下所示:plt.rcParams['font.family']='KaiTi'plt.text(0.5,0.5,'楷體',ha='center',fontsize=50) Matplotlib默認狀態下無法顯示中文,在前面的許多例子中各種標題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進行操作。方法一:借助rcParams修改字體實現設置7.2.3Matplotlib中設置中文[例7-5]中文顯示方法一。 Matplotlib默認狀態下無法顯示中文,在前面的許多例子中各種標題及圖例都是使用的英文。若在作圖過程中,需要顯示中文,可通過下面兩種方法進行操作。方法二:在有中文輸出的地方,增加一個fontproperties屬性。7.2.3Matplotlib中設置中文[例7-6]中文顯示方法二。Pyplot使用037.3.1plt.plot()的使用
在Matplotlib模塊中,Pyplot是一個核心的子模塊,通過該子模塊,我們可以完成很多基本的可視化操作。子模塊的導入如下:importmatplotlib.pyplotasplt
其中,以plt作為Pyplot子模塊的縮寫 Pyplot繪圖的主要功能是繪制x,y的坐標圖,在完成繪圖后一般情況下是不會自動顯示圖表的,需要調用plt.show()方法顯示。當plt.plot()中只有一個輸入列表或者數組時,參數會被當作Y坐標數據,而X的坐標列表自動生成索引,默認為[0,1,2,3,…]。1、基本使用使用plt.plot()繪制的主要是線圖,其語法格式為:plt.plot(x,y,
format_string,
**kwargs)其中:必要的參數是x坐標列表和y坐標列表。當plt.plot(x,y)中用2個以上參數時,則會按照x軸和y軸順序繪制數據點。7.3.1plt.plot()的使用[例7-7]plt.plot()繪制實例。plt.plot()還有數十個可選參數來設置繪圖特征,但常用的有幾個特征,分別是: color:設置線條顏色,默認為藍色。 linewidthorlw:設置線條寬度,默認為1.0。 linestyleorls:設置線條樣式,默認為實線。 labels:設置圖形名稱,一般搭配legend屬性使用。 marker:設置數據點的符號,默認為點。字符顏色字符顏色‘b’藍色‘g’綠色‘r’紅色‘c’青色‘m’品紅色‘y’黃色‘k’黑色‘w’白色字符線條樣式‘-’實線‘--’虛線‘-.’點劃線‘:’點線字符標記類型字符標記類型‘。’點‘,’像素‘o’圓圈‘v’下三角1‘^’上三角1‘<’左三角1‘>’右三角1‘1’下三角2‘2’上三角2‘3’左三角2‘4’右三角2‘s’正方形‘p’五角形‘*’星號‘h’六邊形樣式1‘H’六邊形樣式2‘+’加號‘x’X‘D’鉆石‘d’薄鉆石‘|’垂直線‘_’水平線7.3.1plt.plot()的使用1、基本使用Matplotlib的顏色Matplotlib的線條樣式Matplotlib標記1、基本使用—參數設置實例7.3.1plt.plot()的使用[例7-8]設置plot繪圖特征實例。2、添加內容
圖表主體內容設置結束后,還可以設置或添加文本內容。具體的添加內容與所調用的函數具體見表。函數名稱函數作用plt.title()在當前圖形中添加標題,可以指定標題的名稱、位置、顏色、字體大小等參數。plt.xlabel()在當前圖形中添加x軸名稱,可以指定位置、顏色、字體大小等參數plt.ylabel()在當前圖形中添加y軸名稱,可以指定位置、顏色、字體大小等參數plt.xlim()指定當前圖形x軸的范圍,只能確定一個數值區間,而無法使用字符串標識。plt.ylim()指定當前圖形y軸的范圍,只能確定一個數值區間,而無法使用字符串標識。plt.xticks()指定x軸刻度的數目與取值。plt.yticks()指定y軸刻度的數目與取值。plt.legend()指定當前圖形的圖例,可以指定圖例的大小、位置、標簽7.3.1plt.plot()的使用常用添加畫布內容的函數說明2、添加內容—實例7.3.1plt.plot()的使用[例7-9]設置plot繪圖文本。2、添加內容—實例7.3.1plt.plot()的使用[例7-10]為圖形添加注釋。代碼中的plt.annotate()函數有多個參數plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)3、圖形的保存7.3.1plt.plot()的使用
圖形繪制完成后,可以使用plt.show()進行顯示,也可以使用plt.savefig()將其保存,在該函數中可以設置保存路徑和文件名、圖片的分辨率、邊緣的顏色等參數。如果既要顯示又要保存,請注意要將plt.savefig()放在plt.show()之前。否則,在plt.show()后實際上已經創建了一個新的空白的圖片,此時再用plt.savefig()就會保存這個生成的空白圖片。[例7-11]保存圖片。plt.savefig()函數中主要參數含義為:fname:含有文件路徑的字符串,拓展名指定文件類型,如'png'、'pdf'、’svg'、'ps'、'jpg'等;dpi:分辨率,默認100;facecolor:圖像的表面顏色,默認為“auto”;bbox_inches:圖表需要保留的部分,如果設置為“tight”,則將嘗試剪除圖像周圍的空白部分。7.3.2子圖
在Matplotlib中,不僅可以在一張圖形中繪制多條曲線,還可以將一張圖分成多個子圖進行繪制。plt的subplot()方法參數可以是一個三位數字,例如121,也可以是一個數組,如[1,2,1]。其中第一個數字代表子圖總行數,第二個數字代表子圖總列數,第三個數字表示對應圖像顯示的繪圖區域數。【解釋說明】:以plt.subplot(2,2,1)為例,它是指將繪圖區域分為2行2列4個區域,并在第一個區域內作圖,其他同上。1. 使用matplotlib.pyplot.subplot()進行設置子圖[例7-12]用plt的subplot()繪制子圖。
subplot()方法也可以設置不同大小的繪圖區域。【解釋說明】:對于第一圖而言,它是在2行1列的區域內作圖,當設置后續三張圖的位置時,從編號4開始,暗示圖一占據3列的寬度。7.3.2子圖1. 使用matplotlib.pyplot.subplot()進行設置子圖[例7-13]使用subplot()設置不同大小的繪圖區域。7.3.2子圖
實際使用中可能會面臨更復雜的繪圖分隔區域,subplot()方法就不能很好地滿足需要,此時需要借助subplot2grid()方法。語法如下: plt.subplot2grid(GridSpec,CurSpec,colspan=num1,rowspan=num2)2. 使用matplotlib.pyplot.subplot2grid()設置復雜的繪圖分隔區域【解釋說明】:創建第1個小圖,(3,3)表示將整個圖像窗口分成3行3列,(0,0)表示從第0行第0列開始作圖,colspan=3表示列的跨度為3,行的跨度為缺省,默認跨度為1;創建第2個小圖,(3,3)表示將整個圖像窗口分成3行3列,(1,0)表示從第1行第0列開始作圖,colspan=2表示列的跨度為2。后續子圖同理。注意:可以使用subplots_adjust()調整子圖間的間距。7.3.2子圖2. 使用matplotlib.pyplot.subplot2grid()設置復雜的繪圖分隔區域[例7-14]設置復雜的繪圖分隔區域。7.3.2子圖3. 使用matplotlib.pyplot.subplots()函數來設置子圖
subplots()函數,返回一個包含figure和axes對象的元組。因此,通常使用fig,ax=plt.subplots()將元組分解為fig和ax兩個變量。如果創建了多個子圖,則ax可以是一個Axes對象的數組。
例如,fig,ax=plt.subplots(m,n,figsize=(a,b))設置了m*n個大小為a*b的子圖,fig為圖像對象,ax為大小為m*n的axes數組。7.3.2子圖3. 使用matplotlib.pyplot.subplots()函數來設置子圖[例7-15]用subplots()函數設置子圖。7.3.2子圖4. 使用matplotlib.figure.Figure.add_subplot()來設置子圖
add_subplot()的參數與plt的subplot()類似,可以是一個三位數字,例如121,也可以是一個數組,如[1,2,1]。其中第一個數字代表子圖總行數,第二個數字代表子圖總列數,第三個數字表示對應圖像顯示的繪圖區域數。7.3.2子圖[例7-16]使用figure的add_subplot()設置子圖并標號。4. 使用matplotlib.figure.Figure.add_subplot()來設置子圖7.3.2子圖[例7-17]使用figure的add_subplot()設置子圖。4. 使用matplotlib.figure.Figure.add_subplot()來設置子圖Pyplot中的常用圖形047.4Pyplot中的常用圖形
Matplotlib中提供了許多繪制圖形的函數,包括簡單的基礎統計圖形,如直方圖、氣泡圖、箱線圖等,也有一些高維度的立體圖形,如3D圖等。下表給出Pyplot常用的基礎圖像繪制函數。函數說明Plt.plot(x,y,fmt,…)繪制作表態Plt.boxplot(data,notch,position)繪制箱型圖Plt.bar(left,height,width,bottom)繪制條形圖Plt.barh(width,bottom,left,height)繪制一個橫向條形圖Plt.polar(theta,r)繪制極坐標圖Plt.pie(data,explode)繪制餅圖Plt.psd(x,NFFT=256,pad_to,Fs)繪制功率譜密度圖Plt.specgarm(x,NFFT=256,pad_to,Fs)繪制譜圖Plt.cohere(x,y,NFFT=256,Fs)繪制X-Y的相關性圖Plt.scatter(x,y)繪制散點圖,其中x和y長度相同Plt.step(x,y,where)繪制步階圖Plt.hist(x,bins,normed)繪制直方圖Plt.contour(X,Y,Z,N)繪制等制圖Plt.vlines()繪制垂直圖Plt.stem(x,y,linefmt,markerfmt)繪制柴火圖Plt.plot_date()繪制數據日期7.4.1散點圖
散點圖的繪制依賴plt.scatter()函數,該函數包含很多參數,具體如下:S:點的大小C:點的顏色,取值可以為[‘b’,‘c’,‘g’,‘k’,‘m’,‘r’,‘w’,‘y’]Alpha:點的透明度,取值為0-1Marker:點的形狀,默認狀態下為“o”,常見的還有[‘v’,‘>’,‘<’,‘*’,‘s’,‘p’,‘h’,‘x’,‘+’]。[例7-18]不設置參數繪制散點圖。1、不設置任何參數時調用7.4.1散點圖[例7-19]設置部分參數繪制散點圖。2、設置部分的參數,優化圖表7.4.1散點圖7.4.2柱狀圖
柱狀圖主要用于查看各分組數據的數量分布,以及各個分組數據之間的數量比較。
柱狀圖的繪制使用:
plt.bar(x,height,width,bottom=None,*,align='center',data=None,**kwargs)7.4.2柱狀圖[例7-20]繪制簡單柱狀圖。如果把例子中的plt.bar()改為plt.barh(),其他參數不變,即可以繪制如右圖的水平柱狀圖。7.4.2柱狀圖[例7-21]柱狀圖頂部添加數據說明。本例中在柱狀圖頂部添加上具體的數據說明。7.4.3直方圖
直方圖的繪制依賴plt.hist(x,bins=bins,color=”b”,histtype=’bar’,label=’label’,rwidth=rwidth)函數,具體各參數說明如下: x:連續型數據的輸入值bins:用于確定柱體的個數或是柱體邊緣范圍color:柱體的顏色histtype:柱體類型label:圖例內容rwidth:柱體寬度[例7-22]繪制簡單直方圖。7.4.3直方圖[例7-23]繪制堆積直方圖。當參數stacked設置為False時,也是默認狀態,則繪制并排放置的直方圖。7.4.4餅圖
餅圖的繪制依賴plt.pie(size,explode,labels,autopct,startangle,shadow,color)函數,具體各參數說明如下:size:各部分的百分比;explode:餅片邊緣偏離半徑的百分比,凸出率;labels:每部分餅片的文本標簽;autopct:每部分餅片對應數值的百分比樣式;startangle:第一個餅片逆時針旋轉的角度;shadow:是否繪制餅片的陰影;color:柱體的顏色。[例7-24]只給定數據,繪制餅圖。[例7-25]設置參數,繪制餅圖。7.4.4餅圖[例7-26]設置餅圖的參數explode,強調某幾部分餅片的可視性。7.4.4餅圖7.4.53D圖
Matplotlib還支持3維立體圖形的繪制。利用的函數分別是ax.plot_surface()和ax.scatter()函數,前者常用來繪制三維面,而后者常用來繪制三維立體的點。【首先將繪制3D圖形的模塊導入】[例7-28]定義數據,繪制3D圖。[例7-27]繪制3D圖。本章實踐例題本章實踐例題[例7-29]matplotlib中常用參數設置實例。本例介紹了使用matplotlib.pyplot中的函數設置中文字體和字號、圖形的x和y軸范圍及文本標簽等的方法。本章實踐例題[例7-30]使用matplotlib.axes.Axes.set()函數設置圖形屬性。可以使用matplotlib.axes.Axes.set()函數一次性設置圖形屬性,如下例所示。本章實踐例題[例7-31]某地區2000-2017年的旅游數據分析與可視化。隨著人們生活水平的提升和時代的發展,旅游受到越來越多的人的喜愛,將我國旅游業的發展推入新的時代。下面結合某地區2000-2017年的旅游人數與費用分析國內旅游業的發展。案例需求:以城鄉居民的旅游人數變化,結合所學的作圖工具,得出以下結論:旅游業的發展變化趨勢。數據準備:該數據庫中收集了2000-2017年某地區有關旅游業的相關信息,并將其整理到名為Tour的xlsx的文件中。具體數據見下表。本章實踐例題本章實踐例題[例7-31]某地區2000-2017年的旅游數據分析與可視化。案例實現:從生成的折線圖可知,國內某地區旅游總人次隨年份呈現出明顯上升的趨勢,可見旅游業的發展也一直處于高速發展的進程中,圖中顯示城鎮居民國內旅游人數的變化趨勢與總體趨勢大致相同,而農村居民國內旅游人次的增長較為緩慢。由此也可見國內旅游業的發展主要依賴于城鎮居民的旅游人次。此特點也可由其他的特征得出,讀者自行練習。本章實踐例題[例7-32]某高校3個專業高考入學分數的可視化分析。案例需求:分別以折線圖和柱狀圖等形式,分析某高校計科、材料、物流專業學生的高考入學分數情況。數據準備:該數據集名為“gaokaofenshu.xlsx”,記錄了某高校計科、材料、物流三個專業的高考分數。本章實踐例題[例7-32]某高校3個專業高考入學分數的可視化分析。本章實踐例題[例7-33]Netflix電視節目和電影數據的可視化分析。案例需求:對于Netflix列出的電視節目和電影數據進行可視化分析,該數據集包括截至2019年Netflix
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 豪華別墅裝修委托合同模板
- 石子加工生產合同范本
- 小區車位權益合同范本
- 農村電力安裝合同范本
- 話劇劇本合同范本
- 農場樂園采購合同范本
- 心愿任務群之許下遠足心愿-一年級語文下冊二單元《我多想去看看》教學設計(第一課時)
- 內部承包磚合同范本
- 安裝門窗合同范本
- 2025年新版正式員工勞動合同范本
- 名著知識競賽
- 《系統思維解決問題》
- 保安經理工作計劃
- 2024中國一重集團有限公司管理二級單位領導人員崗位招聘筆試參考題庫附帶答案詳解
- 《配網設備狀態檢修試驗規程》
- 2024年度-網盤金融學(貨幣銀行學)黃達pdf
- 環境內分泌干擾物
- 三氧治療糖尿病足
- 醫療器械臨床試驗三方協議模板
- 某煤業有限公司機電安裝工程竣工驗收資料
- 生產性服務業行業特征
評論
0/150
提交評論