大數(shù)據(jù)可視化 課件 項(xiàng)目1 Matplotlib應(yīng)用_第1頁(yè)
大數(shù)據(jù)可視化 課件 項(xiàng)目1 Matplotlib應(yīng)用_第2頁(yè)
大數(shù)據(jù)可視化 課件 項(xiàng)目1 Matplotlib應(yīng)用_第3頁(yè)
大數(shù)據(jù)可視化 課件 項(xiàng)目1 Matplotlib應(yīng)用_第4頁(yè)
大數(shù)據(jù)可視化 課件 項(xiàng)目1 Matplotlib應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩153頁(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)介

—Matplotlib應(yīng)用項(xiàng)目一:目錄CONTENTS繪制特殊圖像思考與練習(xí)項(xiàng)目概述學(xué)習(xí)目標(biāo)Matplotlib入門繪制基礎(chǔ)圖形繪制復(fù)合圖形1項(xiàng)目概述Matplotlib是Python中最受歡迎的數(shù)據(jù)可視化軟件包之一。本項(xiàng)目介紹如何使用Matplotlib繪圖庫(kù),將難以理解的數(shù)據(jù)進(jìn)行可視化,繪制各種靜態(tài)、動(dòng)態(tài)、交互式圖表,如折線圖、散點(diǎn)圖、餅圖等,從而實(shí)現(xiàn)直觀展現(xiàn)數(shù)據(jù)的目的。項(xiàng)目概述本項(xiàng)目融合Matplotlib基礎(chǔ)知識(shí)、綜合繪圖于一體,著重介紹Matplotlib常用圖表的繪制方法,通過(guò)綜合應(yīng)用對(duì)所學(xué)內(nèi)容進(jìn)行練習(xí),熟練掌握本項(xiàng)目?jī)?nèi)容。本項(xiàng)目學(xué)習(xí)內(nèi)容分三方面展開(kāi)Matplotlib簡(jiǎn)介1Matplotlib入門2Matplotlib常用圖表繪制3項(xiàng)目概述2學(xué)習(xí)目標(biāo)

學(xué)習(xí)目標(biāo)通過(guò)本項(xiàng)目的學(xué)習(xí)由淺入深地了解Matplotlib,掌握Matplotlib入門使用、Matplotlib常用圖表繪制方法等。培養(yǎng)學(xué)生具備Matplotlib大數(shù)據(jù)可視化的基本技能,熟練掌握各種布局、配色、坐標(biāo)軸設(shè)置等,繪制可視化圖表,更直觀地理解數(shù)據(jù)背后的含義。3Matplotlib入門Matplotlib是Python中應(yīng)用極其廣泛的繪圖庫(kù)。Matplotlib功能強(qiáng)大,主流的圖表格式在Matplotlib中都能找到,想要更深入地了解Matplotlib,可經(jīng)常查閱官方文檔,官方網(wǎng)址為:/。本任務(wù)對(duì)Matplotlib簡(jiǎn)介、安裝入門、基本用法等進(jìn)行講解與實(shí)踐,初步了解Matplotlib繪圖庫(kù),通過(guò)實(shí)踐認(rèn)知Matplotlib強(qiáng)大的繪圖能力,借助圖形化的數(shù)據(jù)表現(xiàn)方式更好地認(rèn)知數(shù)據(jù)之間的特點(diǎn)和關(guān)系。完成本任務(wù)需要掌握Matplotlib的安裝及繪圖模塊的入門操作,以及折線圖、柱狀圖、直方圖、堆疊條形圖、面積圖、散點(diǎn)圖等圖形繪制方法,掌握繪圖中主要函數(shù)的功能和輸入輸出參數(shù),深入理解Matplotlib繪圖模塊的繪圖步驟與原理,并依據(jù)練習(xí)題將所學(xué)知識(shí)鞏固應(yīng)用。任務(wù)描述Matplotlib最初是由JohnD.Hunter在2003年開(kāi)發(fā)的一個(gè)2D繪圖庫(kù),其設(shè)計(jì)靈活、易于使用,因此在學(xué)術(shù)界和工業(yè)界廣受歡迎。知識(shí)與技能——Matplotlib起源目前,Matplotlib迅速成為Python數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中最流行的繪圖工具之一。以其優(yōu)雅的API設(shè)計(jì)和強(qiáng)大的數(shù)據(jù)可視化功能而聞名,在各個(gè)領(lǐng)域中得到廣泛應(yīng)用,包括科學(xué)研究、金融分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等等。知識(shí)與技能——Matplotlib特點(diǎn)(1)Matplotlib是一個(gè)功能強(qiáng)大、易于使用和高度靈活的繪圖工具,Matplotlib具有豐富的功能、高度靈活性、易于使用以及廣泛的可移植性和開(kāi)源性等特點(diǎn),使其成為Python數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中最受歡迎和常用的繪圖工具之一。1.廣泛支持Matplotlib支持多種不同類型的圖形,包括線圖、柱狀圖、散點(diǎn)圖、直方圖、等高線圖等。此外,它也可以支持2D和3D圖形繪制。3.易于使用Matplotlib擁有簡(jiǎn)單的API接口,使得用戶可以輕松繪制高質(zhì)量的圖形。該工具還提供了大量的樣式和模板,供用戶選擇使用。主要特點(diǎn)(六點(diǎn))2.高度靈活Matplotlib提供了豐富的自定義選項(xiàng),以便用戶可以完全控制圖形的制作方式。這些選項(xiàng)包括調(diào)整刻度標(biāo)簽、軸限制、圖例屬性、顏色色帶等。知識(shí)與技能——Matplotlib特點(diǎn)(2)4.交互式控制Matplotlib可以與各種交互式GUI平臺(tái)集成,例如JupyterNotebook,IPythonShell和Python編程環(huán)境,它還支持鼠標(biāo)事件和鍵盤事件等交互式功能。5.可移植性由于Matplotlib是基于Python編寫的,因此它非常容易移植到不同的操作系統(tǒng)和硬件平臺(tái)上。6.開(kāi)源可擴(kuò)展Matplotlib的源代碼公開(kāi),開(kāi)放給任何人免費(fèi)使用和修改。因此,它已經(jīng)成為Python數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中的不可或缺的一部分,并可通過(guò)眾多可擴(kuò)展包轉(zhuǎn)換和擴(kuò)展功能。雖然Matplotlib是一個(gè)功能強(qiáng)大、靈活易用的繪圖工具,但也存在一些缺點(diǎn)。默認(rèn)樣式較為簡(jiǎn)單

Matplotlib的默認(rèn)樣式對(duì)于一些用戶來(lái)說(shuō)可能顯得過(guò)于簡(jiǎn)單,需要進(jìn)行個(gè)性化的定制,這可能需要一些編程經(jīng)驗(yàn)和時(shí)間。01生成的圖形可能較為笨重由于Matplotlib圖形生成時(shí)的復(fù)雜計(jì)算,生成的圖形可能會(huì)較為笨重,尤其是對(duì)于復(fù)雜的圖形或大量數(shù)據(jù)的情況。02不太適合比較復(fù)雜的交互式繪圖盡管Matplotlib提供了交互式功能,但是相對(duì)于一些專門為交互式數(shù)據(jù)可視化設(shè)計(jì)的工具(如D3.js或Plotly等),它的交互性可能相對(duì)較弱。03知識(shí)與技能——Matplotlib不足知識(shí)與技能——Matplotlib基礎(chǔ)函數(shù)Matplotlib提供了多種繪圖方式:如散點(diǎn)圖、柱狀圖、折線圖、熱力圖等。除了以上幾種常見(jiàn)的圖表,Matplotlib還支持多種其他類型的圖表,如3D圖、等高線圖、極坐標(biāo)圖等。

一般在學(xué)習(xí)Matplotlib庫(kù)時(shí),都是先在一個(gè)平面坐標(biāo)系內(nèi)畫圖形,再去學(xué)其它類型圖形的繪制。Matplotlib庫(kù)在平面坐標(biāo)系內(nèi)畫圖時(shí),有很多相關(guān)的函數(shù):plt.title()顯示圖形的標(biāo)題(Title)plt.legend()顯示圖例(Legend)plt.grid()設(shè)置圖形的網(wǎng)格(Grid)plt.figure()設(shè)置圖形對(duì)象(Figure)plt.gca()返回子圖對(duì)象(Axes)plt.ylabel()設(shè)置Y坐標(biāo)軸plt.xlabel()設(shè)置X坐標(biāo)軸plt.ylabel()設(shè)置Y軸(Yaxislabel)plt.xlabel()設(shè)置X軸(Xaxislabel)plt.xticks()和plt.yticks()分別設(shè)置X軸和Y軸的刻度知識(shí)與技能——Matplotlib基礎(chǔ)函數(shù)知識(shí)與技能——plot函數(shù)簡(jiǎn)介(1)Python中的plt.plot()函數(shù)是matplotlib.pyplot模塊下的一個(gè)函數(shù),用于畫圖它可以繪制點(diǎn)和線,并且對(duì)其樣式進(jìn)行控制??梢岳L制出多種風(fēng)格的圖案,如下所示:plt.plot(x,y,format_string,**kwargs)X軸數(shù)據(jù),列表或數(shù)組,可選。Y軸數(shù)據(jù),列表或數(shù)組。format_string:控制曲線的格式字符串,可選。**kwargs:第二組或更多(x,y,format_string),可畫多條曲線。對(duì)于format_string由顏色字符、風(fēng)格字符、標(biāo)記字符組成。顏色字符舉例如下:‘b’表示藍(lán)色、‘c’表示青綠色、‘g’表示綠色、‘k’表示黑色、‘m’表示洋紅色、‘r’表示紅色、‘w’表示白色、‘y’表示黃色風(fēng)格字符舉例如下:‘‐’表示實(shí)線、‘‐‐’表示破折線、‘‐.’表示點(diǎn)劃線、‘:’表示虛線標(biāo)記字符舉例如下:‘.’表示點(diǎn)標(biāo)記、‘,’表示像素標(biāo)記(極小點(diǎn))、‘o’表示實(shí)心圈標(biāo)記、‘v’表示倒三角標(biāo)記、‘^’表示上三角標(biāo)記、‘>’表示右三角標(biāo)記、‘<’表示左三角標(biāo)記。知識(shí)與技能——plot函數(shù)簡(jiǎn)介(2)對(duì)于**kwargs,這是一大堆可選內(nèi)容,可以在里面指定很多內(nèi)容,如“l(fā)abel”指定線條的標(biāo)簽,“l(fā)inewidth”指定線條的寬度,color指定顏色,label線條的標(biāo)簽,linestyle表示線條的風(fēng)格,linewidth表示線條的寬度。知識(shí)與技能——?jiǎng)?chuàng)建畫布與創(chuàng)建子圖函數(shù)名稱函數(shù)作用plt.figure(figsize,facecolor)創(chuàng)建一個(gè)空白畫布,figsize參數(shù)可以指定畫布大小,像素,單位為英寸。figure.add_subplot()創(chuàng)建并選中子圖,可以指定子圖的行數(shù),列數(shù),與選中圖片編號(hào)。知識(shí)與技能——添加畫布內(nèi)容函數(shù)名稱函數(shù)作用plt.plot(x,y,ls,lw,lable,color)根據(jù)x,y數(shù)據(jù)繪制直線、曲線、標(biāo)記點(diǎn),ls為線型linestyle,lw為線寬linewidth,lable為標(biāo)簽文本內(nèi)容,color為顏色。plt.scatter(x,y,c,marker,label,color)繪制散點(diǎn)圖:x、y為相同長(zhǎng)度的序列,c為單個(gè)顏色字符或顏色序列,marker為標(biāo)記的樣式,默認(rèn)的是'o',label為標(biāo)簽文本內(nèi)容,color為顏色plt.bar(x,height,width,bottom)繪制條形圖plt.pie(x,explode,labels,autopct,shadow=False,startangle)繪制餅圖plt.title(string)在當(dāng)前圖形中添加標(biāo)題,可以指定標(biāo)題的名稱、位置、顏色、字體大小等參數(shù)。plt.xlabel(string)在當(dāng)前圖形中添加x軸名稱,可以指定位置、顏色、字體大小等參數(shù)。plt.ylabel(string)在當(dāng)前圖形中添加y軸名稱,可以指定位置、顏色、字體大小等參數(shù)。plt.xlim(xmin,xmax)指定當(dāng)前圖形x軸的范圍,只能確定一個(gè)數(shù)值區(qū)間,而無(wú)法使用字符串標(biāo)識(shí)。plt.ylim(ymin,ymax)指定當(dāng)前圖形y軸的范圍,只能確定一個(gè)數(shù)值區(qū)間,而無(wú)法使用字符串標(biāo)識(shí)。plt.xticks()指定x軸刻度的數(shù)目與取值。plt.yticks()指定y軸刻度的數(shù)目與取值。plt.legend()指定當(dāng)前圖形的圖例,可以指定圖例的大小、位置、標(biāo)簽。知識(shí)與技能——保存與展示圖形函數(shù)名稱函數(shù)作用plt.savafig()保存繪制的圖片,可以指定圖片的分辨率、邊緣的顏色等參數(shù)。plt.show()在本機(jī)顯示圖形。知識(shí)與技能——線條顏色(color)的設(shè)置線的顏色顏色'b'藍(lán)色'g'綠色'r'紅色'c'青色'm'品紅'y'黃色'k'黑'w'白色知識(shí)與技能——線條標(biāo)記(marker)的設(shè)置線的標(biāo)記描述'.'點(diǎn)標(biāo)記','像素標(biāo)記'o'圓圈標(biāo)記's'方形標(biāo)記'*'星形標(biāo)記'+'加號(hào)標(biāo)記'x'x標(biāo)記知識(shí)與技能——線條類型(line)的設(shè)置線的類型描述'-'實(shí)線樣式'--'虛線樣式'-.'破折號(hào)-點(diǎn)線樣式任務(wù)實(shí)施——1.Matplotlib基本用法第一步:Matplotlib安裝打開(kāi)命令提示符,輸入pipinstallmatplotlib回車即可安裝。這里安裝的是3.6.2版本,安裝Matplotlib如下圖所示。任務(wù)實(shí)施——1.Matplotlib基本用法第二步:測(cè)試導(dǎo)入Matplotlib成功所示,在Python中導(dǎo)入Matplotlib模塊(importmatplotlib),沒(méi)有報(bào)錯(cuò)說(shuō)明安裝成功。

任務(wù)實(shí)施——2.Matplotlibplot函數(shù)折線圖繪制方法:

繪制一個(gè)線段顏色為紅色、菱形點(diǎn)標(biāo)記,破折線連接的折線圖,如圖13所有a到z開(kāi)頭的單詞數(shù)量折線圖所示。也可以將代碼屬性進(jìn)行簡(jiǎn)化,用'rD--'來(lái)表示,如代碼注釋部分。第一步:導(dǎo)包和定義數(shù)據(jù)#導(dǎo)入Matplotlib庫(kù)

importmatplotlib.pyplotaspltletter=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

enword=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]

第二步:繪制折線圖#繪制折線圖

plt.plot(letter,enword,color='r',marker='D',linestyle='--',linewidth=1,markersize=2)

#或者

#plt.plot(letter,enword,'rD--',linewidth=1,markersize=2)

plt.show()#展示任務(wù)實(shí)施——2.Matplotlibplot函數(shù)條形圖繪制方法:在上述代碼的基礎(chǔ)上改用bar()繪制條形圖,如圖1-4所有a到z開(kāi)頭的單詞數(shù)量條形圖所示。該圖會(huì)在接下來(lái)的學(xué)習(xí)中頻繁用到。#繪制條形圖

colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度plt.show()任務(wù)實(shí)施——2.Matplotlibplot函數(shù)Matplotlib中的畫布設(shè)置主要用到了figure()函數(shù),用來(lái)設(shè)置畫布的寬高、分辨率、背景顏色等。嘗試將畫布顏色設(shè)置為grey(灰色),效果如下圖畫布設(shè)置所示。#figsize控制畫布的寬和高,dpi分辨率,facecolor設(shè)置畫布背景顏色

plt.figure(figsize=(8,6),dpi=90,facecolor='grey')#繪制條形圖

colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度plt.show()#展示任務(wù)實(shí)施——3.Matplotlib畫布設(shè)置任務(wù)實(shí)施——4.Matplotlib圖表標(biāo)題設(shè)置Matplotlib圖表標(biāo)題設(shè)置使用title()函數(shù),參數(shù)如下:label表示標(biāo)題內(nèi)容;font_dict是一個(gè)字典,用來(lái)設(shè)置字體、字號(hào)、顏色等;loc表示標(biāo)題的對(duì)齊,包括left,right和center,默認(rèn)為center;pad表示標(biāo)題與圖表頂部的距離,默認(rèn)為None。colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度

#fontdict可以單獨(dú)定義,也可以直接在函數(shù)中定義

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.show()#展示任務(wù)實(shí)施——5.Matplotlib坐標(biāo)軸設(shè)置上一操作的圖表中所使用的坐標(biāo)軸是系統(tǒng)默認(rèn)設(shè)置的,接下來(lái)嘗試使用xlabel()和ylabel()修改坐標(biāo)軸的標(biāo)簽,使用xticks()和yticks()修改坐標(biāo)數(shù)字,效果如下圖坐標(biāo)軸設(shè)置所示。第一步:設(shè)置X、Y軸標(biāo)題plt.xlabel('letter',fontsize=14)

plt.ylabel('number',fontsize=14)

#修改坐標(biāo)數(shù)字的字號(hào)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)任務(wù)實(shí)施——5.Matplotlib坐標(biāo)軸設(shè)置此外,還可以通過(guò)改變坐標(biāo)軸的刻度范圍來(lái)調(diào)整優(yōu)化布局,如圖1-8調(diào)整y軸刻度范圍、圖1-9設(shè)置y軸為對(duì)數(shù)軸所示。第二步:修改Y軸刻度范圍#將y軸刻度范圍調(diào)整到(0,1200)

plt.ylim(0,1200)任務(wù)實(shí)施——5.Matplotlib坐標(biāo)軸設(shè)置第三步:設(shè)置Y軸為對(duì)數(shù)軸#設(shè)置y軸為對(duì)數(shù)軸

plt.yscale('log')

#將y軸刻度范圍調(diào)整到(0,1200)

plt.ylim(0,1200)plt.show()#展示取loc='best',圖例會(huì)自動(dòng)放置在坐標(biāo)軸平面中數(shù)據(jù)圖表最少的位置,也就是最合適的位置上(一般圖例都取該值);取loc='XXX',這里的XXX有九種表示方法。將坐標(biāo)軸平面分為九部分:upperleft(頂部左側(cè)),uppercenter(頂部中心),upperright(頂部右側(cè)),centerleft(中部左側(cè)),center(中心位置),centerright(中部右側(cè)),lowerleft(底部左側(cè)),lowercenter(底部中心)和lowerright(底部右側(cè))。取loc=(x,y),將x軸和y軸看作單位1,(0,0)表示取到坐標(biāo)軸平面的左下角,(1,1)表示右上角,(0.5,0.5)則表示中心位置。010203通過(guò)在legend(handles=,labels=,loc=)中設(shè)置不同的參數(shù)可以實(shí)現(xiàn)個(gè)性化圖例定制。其中handles為所畫線條的實(shí)例對(duì)象;labels為圖例內(nèi)容;loc為圖例在整個(gè)坐標(biāo)軸平面中的位置。loc在這里有三種具體的取值方法,如左所示。任務(wù)實(shí)施——6.Matplotlib圖例設(shè)置任務(wù)實(shí)施——6.Matplotlib圖例設(shè)置為方便展示,將條形圖顏色設(shè)置為默認(rèn)的藍(lán)色。下面分別嘗試將loc設(shè)置為'best'和'uppercenter',效果如圖110圖例設(shè)置(loc='best')、圖111圖例設(shè)置(loc='uppercenter')所示。程序如下:plt.rcParams['font.sans-serif']=['SimHei']#顯示中文標(biāo)簽

plt.rcParams['axes.unicode_minus']=False#正常顯示負(fù)號(hào)bar=plt.bar(letter,enword)

plt.legend(handles=bar,labels=['某字母開(kāi)頭的單詞數(shù)'],loc='best')

#plt.legend(handles=bar,labels=['某字母開(kāi)頭的單詞數(shù)'],loc='uppercenter')plt.show()#展示任務(wù)實(shí)施——7.MatplotlibAnnotation標(biāo)注設(shè)置程序如下:有時(shí)需要在圖表上重點(diǎn)表示一些信息,可以使用annotate(text,xy,xytext,xycoords='data',textcoords,arrowprops)來(lái)設(shè)置箭頭內(nèi)容指向,從而強(qiáng)調(diào)圖表數(shù)據(jù)或者標(biāo)注細(xì)節(jié)信息。如圖112Annotation標(biāo)注設(shè)置所示,在條形圖中標(biāo)注出s開(kāi)頭的單詞數(shù)。#繪制條形圖

colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度

#fontdict可以單獨(dú)定義,也可以直接在函數(shù)中定義

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.annotate(text='這是s開(kāi)頭的單詞數(shù)',xy=(18,600),xytext=(-130,30),

xycoords='data',textcoords='offsetpoints',fontsize=12,

arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=-.2'))plt.show()#展示任務(wù)實(shí)施——8.Matplotlibtick能見(jiàn)度設(shè)置有時(shí)圖表可能會(huì)與坐標(biāo)軸重合,導(dǎo)致標(biāo)簽被遮擋,可以通過(guò)設(shè)置tick能見(jiàn)度來(lái)解決。函數(shù)label.set_bbox(dict(facecolor=,edgecolor=,alpha=)),其中facecolor代表標(biāo)簽底色;edgecolor代表標(biāo)簽邊緣顏色;alpha表示透明度,默認(rèn)在0~1之間。如果標(biāo)簽存在不顯示的問(wèn)題,可設(shè)置zorder讓標(biāo)簽顯于圖像之上。效果如圖1-13tick能見(jiàn)度設(shè)置所示。bar=plt.bar(letter,enword,zorder=1)#設(shè)置圖像的zorder

ax=plt.gca()#獲取當(dāng)前坐標(biāo)軸

#設(shè)置x軸為底部的軸,設(shè)置y軸為左側(cè)的軸

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

#設(shè)置標(biāo)簽?zāi)芤?jiàn)度

forlabelinax.get_xticklabels()+ax.get_yticklabels():#遍歷所有標(biāo)簽

label.set_bbox(dict(facecolor='red',edgecolor='blue',alpha=0.4))

label.set_zorder(100)#設(shè)置標(biāo)簽的zorder在圖像之上plt.show()#展示任務(wù)實(shí)施——9.Matplotlib注釋設(shè)置在圖表中添加注釋可以使用text(x,y,s),其中x,y表示文字位置,s為需要注釋的文本內(nèi)容,效果如圖114注釋設(shè)置所示。#繪制條形圖

colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度

#fontdict可以單獨(dú)定義,也可以直接在函數(shù)中定義

fontdict=dict(fontsize=16,color='black',

family='TimesNewRoman',weight='bold')

plt.title(label='WordsofCET-4&CET-6',fontdict=fontdict,loc='center',pad=None)

plt.text(2,650,'由圖可知,s開(kāi)頭的單詞數(shù)最多\nx開(kāi)頭的單詞數(shù)最少',

fontdict={'size':12,'color':'r'})plt.show()#展示

任務(wù)實(shí)施——10.Matplotlib圖表與畫布邊緣邊距設(shè)置使用subplots_adjust(left,bottom,right,top,wspace,hspace)設(shè)置圖表與畫布之間的邊緣邊距,left,bottom,right,top依次表示左、下、右、上四個(gè)方向上圖表與畫布邊緣之間的距離,取值范圍在0~1之間。使用這四個(gè)參數(shù)時(shí),將畫布左下角視為坐標(biāo)原點(diǎn),畫布的寬和高都視為單位1。wspace和hspace分別表示水平方向上圖像間的距離和垂直方向上圖像間的距離,在畫布有多個(gè)子圖時(shí)使用。嘗試對(duì)圖表與畫布的邊緣邊距進(jìn)行修改,效果如圖115圖表與畫布邊緣邊距設(shè)置所示。#figsize控制畫布的寬和高,dpi分辨率,facecolor設(shè)置畫布背景顏色

plt.figure(figsize=(8,6),dpi=90,facecolor='grey')

plt.subplots_adjust(left=0.25,bottom=0.10,right=0.95,top=0.90)

#繪制條形圖

colors=['red','blue','green','purple']#定義顏色

plt.bar(letter,enword,color=colors,alpha=0.4)#設(shè)置顏色和透明度

plt.show()#展示通過(guò)本任務(wù)的學(xué)習(xí),了解Matplotlib相關(guān)基礎(chǔ)知識(shí),初步掌握Matplotlib繪圖模塊的使用,以及在基礎(chǔ)條形圖中設(shè)置標(biāo)題、坐標(biāo)軸、圖例等一系列相關(guān)圖表設(shè)置,對(duì)涉及的參數(shù)有了一定了解。本任務(wù)的重點(diǎn)是使用繪圖模塊進(jìn)行繪圖,以及定制化圖表設(shè)置,難點(diǎn)在于圖表設(shè)置時(shí)參數(shù)的選擇、視圖定制化的學(xué)習(xí)與靈活運(yùn)用,可以通過(guò)練習(xí)題進(jìn)行掌握與提升、課外學(xué)習(xí)更多Matplotlib知識(shí)加深和拓展知識(shí)儲(chǔ)備?;诒救蝿?wù)的成果,對(duì)于Matplotlib繪制圖表的原理有了一定的了解,通過(guò)案例更好地理解了Matplotlib繪圖技巧,為后續(xù)學(xué)習(xí)做好鋪墊。任務(wù)總結(jié)4繪制基礎(chǔ)圖形任務(wù)描述本任本將結(jié)合第一節(jié)Matplotlib基本用法的知識(shí)點(diǎn),使用Matplotlib進(jìn)行基礎(chǔ)圖形繪制,學(xué)習(xí)在Matplotlib中針對(duì)特定圖形調(diào)用繪圖函數(shù),使用函數(shù)繪制散點(diǎn)圖與折線圖等基礎(chǔ)圖形。此任務(wù)引用四六級(jí)單詞數(shù)據(jù)和隨機(jī)生成數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行散點(diǎn)圖與折線圖等圖形展示,認(rèn)知Matplotlib繪圖風(fēng)格與繪圖原理,將逐步加深對(duì)Matplotlib繪圖方法的理解,掌握Matplotlib繪圖的主要步驟,包括初始化畫布及正確調(diào)用繪圖函數(shù)等,掌握指定顏色、大小的散點(diǎn)圖等。通過(guò)學(xué)習(xí)本任務(wù)內(nèi)容,掌握基本繪圖方法,掌握折線圖、柱狀圖、直方圖、堆疊條形圖、水平條形圖、帶標(biāo)簽的分組條形圖、面積圖、散點(diǎn)圖、氣泡圖、餅圖、箱型圖、誤差棒圖、雷達(dá)圖的基本繪圖步驟,并依據(jù)練習(xí)題將所學(xué)知識(shí)鞏固應(yīng)用,在后續(xù)實(shí)踐操作中能夠根據(jù)實(shí)際需求繪制所需圖形。本任本將結(jié)合第一節(jié)Matplotlib基本用法的知識(shí)點(diǎn),使用Matplotlib進(jìn)行基礎(chǔ)圖形繪制。知識(shí)與技能——plt.figure()函數(shù)詳解在Matplotlib中,plt.figure()函數(shù)用于創(chuàng)建一個(gè)新的圖形窗口,并返回一個(gè)指向該圖形的引用。通常,我們會(huì)使用該函數(shù)創(chuàng)建圖形對(duì)象,以便進(jìn)行各種定制化的操作,例如添加多個(gè)子圖、設(shè)置圖形大小和分辨率等。在使用plt.figure()函數(shù)創(chuàng)建圖形對(duì)象時(shí),可以傳遞一些可選參數(shù)來(lái)控制圖形的外觀和行為。以下是一些常用的可選參數(shù):figsize:用于設(shè)置圖形的大小,可以傳遞一個(gè)元組,指定圖形的寬度和高度,單位為英寸(inch),例如(6,4)表示寬度為6英寸、高度為4英寸的圖形。dpi:用于設(shè)置圖形的分辨率,即每英寸包含的像素?cái)?shù),可以傳遞一個(gè)整數(shù)值,例如dpi=100表示每英寸包含100個(gè)像素。facecolor:用于設(shè)置圖形的背景顏色,可以傳遞一個(gè)字符串,表示顏色的名稱或RGB值,例如facecolor='white'表示將圖形的背景顏色設(shè)置為白色。edgecolor:用于設(shè)置圖形邊框的顏色,可以傳遞一個(gè)字符串,表示顏色的名稱或RGB值,例如edgecolor='black'表示將圖形的邊框顏色設(shè)置為黑色。frameon:用于控制是否顯示圖形邊框,可以傳遞一個(gè)布爾值,例如frameon=False表示將圖形的邊框隱藏。知識(shí)與技能——plt.figure()函數(shù)詳解axes可以認(rèn)為是figure這張畫圖上的子圖,因?yàn)樽訄D上一般都是坐標(biāo)圖,所以我更愿意理解為軸域或者坐標(biāo)系。一個(gè)figure可以有多個(gè)axes,無(wú)論是pyplot模塊還是figure實(shí)例內(nèi)都定義有多種創(chuàng)建axes的方法。知識(shí)與技能——plt.axes()函數(shù)詳解1.plt.axes()plt.axes()是指pyplot模塊中的axes()方法,該方法會(huì)在當(dāng)前激活的figure中創(chuàng)建一個(gè)axes,并使創(chuàng)建好的axes處于激活狀態(tài)。當(dāng)傳入的第一個(gè)位置參數(shù)為空時(shí),該方法會(huì)創(chuàng)建一個(gè)占滿整個(gè)figure的axes;通常我們可以傳入一個(gè)tuple參數(shù)(left,botton,width,height)作為第一個(gè)位置參數(shù),tuple中四個(gè)元素分別表示與figure左邊框比例距離,邊框?qū)挾日糵igure寬度的比例,寬度比例,高度占figure高度的比例。通過(guò)這種方式添加axes時(shí),matplotlib會(huì)自動(dòng)創(chuàng)建一個(gè)axes,然后將創(chuàng)建好的axes按照給定的位置和size添加到figure中,最后返回一個(gè)axes的引用。知識(shí)與技能——plt.axes()函數(shù)詳解2.figure.add_axes()figure.add_axes()方法的作用是將一個(gè)axes添加到figure中,這一方法可以傳入一個(gè)已創(chuàng)建好的axes作為第一個(gè)參數(shù),add_axes會(huì)將傳入的axes添加到figure中,但這種情況使用不多。在大多數(shù)情況下,我們會(huì)如同上述在plt.axes()方法中那樣傳遞一個(gè)tuple參數(shù)(left,botton,width,height)作為第一個(gè)位置參數(shù)。同樣,如果在相同區(qū)域添加axes,后面添加的axes會(huì)把前面添加的axes覆蓋。知識(shí)與技能——plt.axes()函數(shù)詳解本任務(wù)繪圖時(shí)需要使用的基本繪圖函數(shù),如下表所示。函數(shù)繪制圖形plt.plot()折線圖plt.bar()柱狀圖plt.hist()直方圖plt.bar()堆疊柱狀圖plt.barh()堆積條形圖plt.bar()、plt.legend()帶標(biāo)簽的分組條形圖plt.stackplot()面積圖plt.plot()、plt.scatter()散點(diǎn)圖plt.scatter()氣泡圖plt.pie()餅圖plt.boxplot()箱型圖plt.errorbar()誤差棒圖plt.plot()、plt.fill()雷達(dá)圖任務(wù)實(shí)施——1.繪制折線圖對(duì)于圖表來(lái)說(shuō),最簡(jiǎn)單的就是做出一個(gè)單一函數(shù)y=f(x)的圖像,本節(jié)我們首先來(lái)介紹如何創(chuàng)建折線圖,它是一個(gè)由點(diǎn)和線組成的統(tǒng)計(jì)圖表,常用來(lái)表示數(shù)值隨連續(xù)時(shí)間間隔或有序類別的變化。下面是在四六級(jí)單詞中以各個(gè)字母開(kāi)頭的單詞統(tǒng)計(jì)數(shù)據(jù)的折線圖繪制代碼。輸出效果圖圖1-16所示。importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]fig=plt.figure()

ax=plt.axes()

#plt.figure(figsize=(20,10),dpi=100)

ax.plot(x,y,'-')

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("plot.png",dpi=300)

plt.show()以上是最基礎(chǔ)的折線圖繪制,同理,在繪制過(guò)程中可更改plot()函數(shù)的參數(shù)調(diào)整線條的顏色、粗細(xì)、風(fēng)格、在同一畫布上繪制多條折線圖等。上個(gè)示例繪制結(jié)果如下:任務(wù)實(shí)施——1.繪制折線圖任務(wù)實(shí)施——繪制直方圖直方圖是用一系列不等高的長(zhǎng)方形來(lái)表示數(shù)據(jù),寬度表示數(shù)據(jù)范圍的間隔,高度表示在給定間隔內(nèi)數(shù)據(jù)出現(xiàn)的頻數(shù),長(zhǎng)方形的高度跟落在間隔內(nèi)的數(shù)據(jù)數(shù)量成正比,變化的高度形態(tài)反映了數(shù)據(jù)的分布情況。相關(guān)參數(shù)及解釋如下:hist(x,bins=None,range=None,normed=False,density=False,weights=None,cumulative=False,bottom=None,histtype='bar',align='mid',rwidth=None,orientation='vertical',color=None,edgecolor=None,label=None,stacked=False,**kwargs)x:數(shù)組或者數(shù)組序列(不要求每個(gè)數(shù)組長(zhǎng)度相同),用于存放數(shù)據(jù)。bins:整數(shù)、序列或字符串,整數(shù)表示等寬區(qū)間的個(gè)數(shù)(直方圖條形個(gè)數(shù)),自動(dòng)計(jì)算區(qū)間范圍,序列則表示區(qū)間的范圍,除了最后一個(gè)以外,都是包含左邊不包含右邊,字符串則表示對(duì)應(yīng)的策略,默認(rèn)為

hist.bins。range:元組,指定最小值和最大值(直方圖數(shù)據(jù)的上下界),默認(rèn)包含繪圖數(shù)據(jù)中的最小值和最大值(默認(rèn)以繪圖數(shù)據(jù)的最小值作為直方圖數(shù)據(jù)的上下界)。density:布爾值,可選,如果為True,則返回的是歸一化的概率密度,所有區(qū)間的概率之和為1。normed:是否將直方圖的頻數(shù)轉(zhuǎn)化為頻率。任務(wù)實(shí)施——繪制直方圖在下面給出的例子中,定義一組數(shù)據(jù)數(shù)組,傳入plt.hist()方法中,設(shè)置bins的值確定直方圖條形個(gè)數(shù)、將density設(shè)置為True返回歸一化概率密度。輸出效果如圖1-17所示。frommatplotlibimportpyplotasplta=[131,106,109,121,101,116,119,116,134,143,146,149,150,147,178,157,163,169,134,127,128,129,131,98,125,131,124,139,123,155,96,98,105,174,146,156,131,114,114,165,167,113,144,136,148,94,134,167,104]#定義數(shù)據(jù)

d=6

num_bins=(max(a)-min(a))//d#分割組數(shù)步長(zhǎng)為6,計(jì)算組數(shù)plt.figure(figsize=(20,8),dpi=80)#設(shè)置圖形的大小

plt.hist(a,num_bins,density=1)

#設(shè)置x軸的刻度

plt.xticks(range(min(a),max(a)+d,d))

plt.xticks(fontsize=36)

plt.yticks(fontsize=36)

plt.grid()

plt.tight_layout()

plt.savefig("hist.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制柱狀圖條形圖是一種以長(zhǎng)方形的長(zhǎng)度為變量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)的圖表,柱狀圖適用在較小數(shù)據(jù)集的分析,可以直觀展示個(gè)體之間數(shù)據(jù)的差異。柱狀圖一般使用bar()函數(shù)實(shí)現(xiàn)繪制,只需在函數(shù)中定義需要繪制的兩組數(shù)據(jù),并且可以通過(guò)適當(dāng)調(diào)整參數(shù)來(lái)設(shè)置顏色寬度等屬性,此處給出的示例程序仍然使用四六級(jí)的數(shù)據(jù)進(jìn)行圖形繪制,代碼繪制結(jié)果如圖118柱狀圖。importmatplotlib.pyplotasplt第一步;導(dǎo)入相關(guān)包importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]第二步;定義數(shù)據(jù)第三步;制圖#makedata:

plt.rcParams['font.sans-serif']=['MicrosoftYaHei']

#plot

#繪制條形圖

plt.bar(x,y)

plt.xticks(x,x)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("bar.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制柱狀圖任務(wù)實(shí)施——繪制堆疊條形圖堆疊條形圖與條形圖類似,常被用于比較不同類別的數(shù)值,而且它的每一類數(shù)值內(nèi)部又被劃分為多個(gè)子類別,這些子類別一般用不同的顏色來(lái)表示,有助于分解整體從而對(duì)各部分進(jìn)行比較。堆疊條形圖同樣是調(diào)用bar函數(shù),只是在參數(shù)設(shè)置上面做了調(diào)整,示例代碼multibar.py的運(yùn)行結(jié)果見(jiàn)圖2-19堆疊條形圖。第一步;導(dǎo)包#importingpackage

importmatplotlib.pyplotasplt

importnumpyasnp第二步:定義數(shù)據(jù)x=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])

y3=np.array([12,15,19,6])

y4=np.array([10,29,13,19])任務(wù)實(shí)施——繪制堆疊條形圖第三步:設(shè)置參數(shù)、制圖plt.bar(x,y1,width=0.67)

plt.bar(x,y2,bottom=y1,width=0.67)

plt.bar(x,y3,bottom=y1+y2,width=0.67)

plt.bar(x,y4,bottom=y1+y2+y3,width=0.67)

plt.legend()

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("multibar.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制堆疊條形圖上述代碼在進(jìn)行圖形繪制時(shí),在繪制y2數(shù)據(jù)時(shí),設(shè)置bottom=y1,意思是在y1數(shù)據(jù)繪制的條形圖的基礎(chǔ)進(jìn)行繪制,也就是形成堆疊圖,同樣,y3在y1+y2基礎(chǔ)上進(jìn)行繪制。任務(wù)實(shí)施——繪制水平條形圖水平條形圖一般通過(guò)barh函數(shù)實(shí)現(xiàn),每個(gè)柱形按照給定的對(duì)齊方式定位在y軸的指定位置,在繪制水平方向的堆疊條形圖時(shí),需要將參數(shù)bottom改為left,將參數(shù)width改為height,其他的和垂直方向的條形圖的繪制類似。代碼barh.py的運(yùn)行結(jié)果見(jiàn)圖1-20水平條形圖。任務(wù)實(shí)施——繪制水平條形圖示例代碼如下importmatplotlib.pyplotasplt

importnumpyasnpx=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])#注意此處使用的是barh函數(shù)

plt.barh(x,y1,height=0.67)

plt.barh(x,y2,left=y1,height=0.67)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("barh.png",dpi=300)

plt.tight_layout()

plt.show()任務(wù)實(shí)施——帶標(biāo)簽的分組條形圖分組條形圖應(yīng)用的也是繪制條形圖使用的bar()方法,這里需要通過(guò)設(shè)置坐標(biāo)來(lái)實(shí)現(xiàn),繪制的方法是:在一組畫布上進(jìn)行多組數(shù)據(jù)的繪制,調(diào)整數(shù)據(jù)的橫縱坐標(biāo)來(lái)實(shí)現(xiàn)分組繪制,下面是示例代碼,其中po_l和po_r分別表示兩組數(shù)據(jù)的橫坐標(biāo)數(shù)據(jù),不同的組別一般使用填充顏色進(jìn)行區(qū)分,使用legend()函數(shù)顯示圖例,在繪制之后使用plt.xticks()函數(shù)重新設(shè)置刻度,結(jié)果見(jiàn)圖1-21帶標(biāo)簽的分組條形圖。任務(wù)實(shí)施——帶標(biāo)簽的分組條形圖示例程序和運(yùn)行結(jié)果如下。importmatplotlib.pyplotasplt

importnumpyasnpx=['A','B','C','D']

y1=np.array([10,20,10,30])

y2=np.array([20,25,15,25])#繪圖(在一個(gè)刻度的兩邊分別繪制兩條柱狀圖)

width=0.3#設(shè)置一個(gè)固定寬度

po_l=[i-width/2foriinrange(len(x))]

po_r=[i+width/2foriinrange(len(x))]

#設(shè)置刻度

plt.xticks(range(len(x)),x)

plt.bar(po_l,y1,label="group1",width=0.2)

plt.bar(po_r,y2,label="group2",width=0.2)

plt.legend()

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.savefig("groupbar.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制面積圖折線圖常用于描述某指標(biāo)隨某個(gè)時(shí)間序列的變化。往往一條折線圖可以根據(jù)某個(gè)分組變量拆分成為多個(gè)折線圖,其面積也通常可以有一定的含義,可以幫助我們有效觀察總量的趨勢(shì),因此可以借助Matplotlib中的stackplot()函數(shù)繪制面積圖。函數(shù)參數(shù)定義如下:stackplot(x,*args,**kargs)其中x表示指定面積圖的x軸數(shù)據(jù),*args為可變參數(shù),可以接多組y軸數(shù)據(jù),**kargs用于設(shè)置多類圖表屬性,在下面例子中,橫坐標(biāo)設(shè)置為[0,2,4,6,8],設(shè)置三組y軸數(shù)據(jù),在stackplot()方法中傳入數(shù)據(jù)即可展示y軸數(shù)據(jù)進(jìn)行堆疊后的面積圖,程序運(yùn)行結(jié)果見(jiàn)圖122面積圖。任務(wù)實(shí)施——繪制面積圖示例程序以及運(yùn)行結(jié)果如1-22面積圖。importmatplotlib.pyplotasplt

importnumpyasnpx=np.arange(0,10,2)

ay=[1,1.25,2,2.75,3]

by=[1,1,1,1,1]

cy=[2,1,2,1,2]

y=np.vstack([ay,by,cy])fig,ax=plt.subplots()

ax.stackplot(x,y)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("stackplot.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制散點(diǎn)圖散點(diǎn)圖,又名點(diǎn)圖、散布圖、X-Y圖。散點(diǎn)圖將所有的數(shù)據(jù)以點(diǎn)的形式展現(xiàn)在平面直角坐標(biāo)系上。它至少需要兩個(gè)不同變量,一個(gè)沿x軸繪制,另一個(gè)沿y軸繪制。每個(gè)點(diǎn)在x、y軸上都有一個(gè)確定的位置。散點(diǎn)圖有助于分析兩個(gè)變量之間的相關(guān)性,或找出趨勢(shì)和規(guī)律。散點(diǎn)圖是折線圖的近親,可以使用plot()函數(shù)實(shí)現(xiàn)繪制,也可以使用scatter()函數(shù)。任務(wù)實(shí)施——繪制散點(diǎn)圖方法一:使用plt.plot()繪制散點(diǎn)圖在前文我們介紹了plt.plot/ax.plot方法繪制折線圖,這兩個(gè)方法也可以同樣用來(lái)繪制散點(diǎn)圖,運(yùn)行結(jié)果見(jiàn)圖1-23plt.plot()方法繪制散點(diǎn)圖。importmatplotlib.pyplotaspltx=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

y=[215,149,528,318,255,245,170,182,274,38,27,175,271,112,148,483,35,396,819,364,110,118,205,1,23,7]fig=plt.figure()

ax=plt.axes()

#plt.figure(figsize=(20,10),dpi=100)

ax.plot(x,y,'o')

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("plot1.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制散點(diǎn)圖運(yùn)行結(jié)果見(jiàn)圖1-23plt.plot()方法繪制散點(diǎn)圖。第三個(gè)參數(shù)是使用一個(gè)字符代表的圖標(biāo)繪制點(diǎn)的類型,在使用plot()函數(shù)時(shí),可用某些短字符來(lái)設(shè)置線條類型,同樣的,也可以用某些字符來(lái)設(shè)置點(diǎn)的類型,所有可用的點(diǎn)的類型可以通過(guò)在線文檔進(jìn)行查閱,符號(hào)代碼可以和線條、顏色符號(hào)代碼一起使用。在折線圖的基礎(chǔ)上繪制出散點(diǎn)ax.plot(x,y,'-o'),如圖124在折線圖上繪制散點(diǎn)。任務(wù)實(shí)施——繪制散點(diǎn)圖方法二:使用plt.scatter()繪制散點(diǎn)圖第二種繪制散點(diǎn)圖的方式是使用plt.scatter()函數(shù),它的使用方法和plt.plot()類似,下面附示例代碼scatter.py,運(yùn)行結(jié)果見(jiàn)圖125plt.scatter()方法繪制散點(diǎn)圖。importmatplotlib.pyplotasplt

importnumpyasnp#makethedata

np.random.seed(3)

x=4+np.random.normal(0,2,24)

y=4+np.random.normal(0,2,len(x))#plot

fig,ax=plt.subplots()

ax.scatter(x,y,vmin=0,vmax=100)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=22)

plt.yticks(fontsize=22)

plt.tight_layout()

plt.savefig("scatter.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制散點(diǎn)圖運(yùn)行結(jié)果如圖:plt.scatter()和plt.plot()函數(shù)的主要區(qū)別在于:plt.scatter可以針對(duì)每個(gè)點(diǎn)設(shè)置不同屬性(大小、填充顏色、邊緣顏色等),還可以通過(guò)數(shù)據(jù)集合對(duì)這些屬性進(jìn)行設(shè)置。任務(wù)實(shí)施——繪制散點(diǎn)圖氣泡圖與使用scatter()方法繪制的散點(diǎn)圖步驟類似,只需要在繪制散點(diǎn)圖的scatter()函數(shù)基礎(chǔ)之上改變參數(shù)即可獲得氣泡圖,在示例代碼bubble.py中,通過(guò)設(shè)置s,c,linwidth等參數(shù)改變點(diǎn)的大小、顏色、線寬等屬性,實(shí)現(xiàn)氣泡圖的繪制。importmatplotlib.pyplotasplt

importnumpyasnp

np.random.seed(3)

x=4+np.random.normal(0,2,24)

y=4+np.random.normal(0,2,len(x))

sizes=np.random.uniform(15,80,len(x))#不同大小

colors=np.random.uniform(15,80,len(x))#不同顏色

lsize=1#不同線寬

fig,ax=plt.subplots()

ax.scatter(x,y,s=sizes,c=colors,linewidths=lsize,vmin=0,vmax=100)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("bubble.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制氣泡圖運(yùn)行結(jié)果如圖1-26氣泡圖。任務(wù)實(shí)施——繪制氣泡圖在數(shù)據(jù)分析中,餅圖經(jīng)常被用來(lái)概覽不同類別占總體的比值,在Matplotlib中一般使用pie()函數(shù)進(jìn)行基礎(chǔ)餅圖繪制,在示例代碼pie.py中ax.pie()函數(shù)傳入的參數(shù)有:繪制數(shù)據(jù)x、各區(qū)塊顏色colors、餅圖半徑radius、餅圖中心位置center、邊界wedgeprops、設(shè)置frame為True繪制軸框架,程序結(jié)果見(jiàn)圖1-27繪制簡(jiǎn)單餅圖。importmatplotlib.pyplotasplt

importnumpyasnp#makedata

x=[1,2,3,4]

labels=['a','b','c','d']colors=plt.get_cmap('Blues')(np.linspace(0.2,0.7,len(x)))

#plot

fig,ax=plt.subplots()

ax.pie(x,colors=colors,radius=3,center=(4,4),wedgeprops={"linewidth":1,"edgecolor":"white"},frame=True)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("pie.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制餅圖程序結(jié)果見(jiàn)圖1-27繪制簡(jiǎn)單餅圖。任務(wù)實(shí)施——繪制餅圖以上為基礎(chǔ)的餅圖繪制,后續(xù)可以通過(guò)添加參數(shù)設(shè)置在圖上顯示標(biāo)簽和數(shù)值等信息。在下述程序中,autopct用于設(shè)置數(shù)值精確的百分比,startangle設(shè)置為90度表示逆時(shí)針情況下第一塊楔形開(kāi)始的角度,pctdistance設(shè)置為0.5表示數(shù)值距圓心半徑的距離倍數(shù),shadow設(shè)為true表示顯示餅圖陰影。importmatplotlib.pyplotasplt

importnumpyasnpx=[1,2,3,4]

labels=['a','b','c','d']colors=plt.get_cmap('Blues')(np.linspace(0.2,0.7,len(x)))

#plot

fig,ax=plt.subplots()

ax.pie(x,labels=labels,colors=colors,autopct='%3.2f%%',startangle=90,pctdistance=0.5,shadow=True,radius=3,center=(4,4),wedgeprops={"linewidth":1,"edgecolor":"white"},frame=True)

ax.set(xlim=(0,8),xticks=np.arange(1,8),

ylim=(0,8),yticks=np.arange(1,8))

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("pie.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制氣泡圖程序結(jié)果見(jiàn)圖1-28繪制簡(jiǎn)單餅圖。任務(wù)實(shí)施——繪制餅圖雷達(dá)圖是用于繪制多個(gè)定量變量的一個(gè)或多個(gè)數(shù)值的圖表,Matplotlib中暫時(shí)沒(méi)有允許生成雷達(dá)圖的內(nèi)建函數(shù),因此需要使用基本函數(shù)來(lái)構(gòu)建,雷達(dá)圖需要在極坐標(biāo)的基礎(chǔ)上進(jìn)行繪制,在繪制雷達(dá)圖之前需要知道極坐標(biāo)的角度、半徑、樣式設(shè)置等,然后通過(guò)折線圖加上極坐標(biāo)在畫布上進(jìn)行繪制。任務(wù)實(shí)施——繪制雷達(dá)圖雷達(dá)圖可以進(jìn)行單變量或多變量的繪制,下面是一個(gè)簡(jiǎn)單的單變量雷達(dá)圖繪制示例,在圖形繪制過(guò)程中,首先創(chuàng)建畫布并在新建的畫布上面使用add_subplot()建一個(gè)表,通過(guò)設(shè)置polar值為True繪制一個(gè)極坐標(biāo),取定義數(shù)據(jù)的第一維[38,29,8,7,28]為繪制數(shù)據(jù)values,將360度均分設(shè)置為繪制數(shù)據(jù)的角度angles(這里也可以進(jìn)行自定義),定義好數(shù)據(jù)和角度后就可以通過(guò)折線圖plot()設(shè)置雷達(dá)圖的x軸和y軸,以及設(shè)置顏色線條等屬性,畫好折線圖后使用fill()填充圖形區(qū)域。第一步:導(dǎo)包#Libraries

importmatplotlib.pyplotasplt

importpandasaspd

frommathimportpi第二步驟:定義數(shù)據(jù)#Setdata

#設(shè)定數(shù)據(jù)

df=pd.DataFrame({

'group':['A','B','C','D'],

'var1':[38,1.5,30,4],

'var2':[29,10,9,34],

'var3':[8,39,23,24],

'var4':[7,31,33,14],

'var5':[28,15,32,14]

})任務(wù)實(shí)施——繪制雷達(dá)圖第三步:數(shù)據(jù)預(yù)處理#numberofvariable

#變量類別

categories=list(df)[1:]

#變量類別個(gè)數(shù)

N=len(categories)

#plotthefirstlineofthedataframe.

#繪制數(shù)據(jù)的第一行

values=df.loc[0].drop('group').values.flatten().tolist()

#將第一個(gè)值放到最后,以封閉圖形

values+=values[:1]

print(values)

#設(shè)置每個(gè)點(diǎn)的角度值

angles=[n/float(N)*2*piforninrange(N)]

angles+=angles[:1]

任務(wù)實(shí)施——繪制雷達(dá)圖第四步:繪制圖形

#Initialisethespiderplot

#初始化極坐標(biāo)網(wǎng)格

ax=plt.subplot(111,polar=True)

#Drawoneaxepervariable+addlabelslabelsyet

#設(shè)置x軸的標(biāo)簽

plt.xticks(angles[:-1],categories,color='grey',size=8)

#Drawylabels

#設(shè)置標(biāo)簽顯示位置

#具體見(jiàn)/A/x9J2DRwNd6/

ax.set_rlabel_position(0)

#設(shè)置y軸的標(biāo)簽

plt.yticks([10,20,30],["10","20","30"],color="grey",size=7)

plt.ylim(0,40)

#Plotdata

#畫圖

ax.plot(angles,values,linewidth=1,linestyle='solid')

#Fillarea

#填充區(qū)域

ax.fill(angles,values,'b',alpha=0.1)

plt.xticks(fontsize=12)

plt.yticks(fontsize=12)

plt.tight_layout()

plt.savefig("radar.png",dpi=300)

plt.show()任務(wù)實(shí)施——繪制雷達(dá)圖任務(wù)實(shí)施——繪制雷達(dá)圖運(yùn)行結(jié)果如下圖所示:通過(guò)本任務(wù)的學(xué)習(xí),我們鞏固了Matplotlib的相關(guān)基礎(chǔ)知識(shí)、在任務(wù)一基礎(chǔ)上拓展知識(shí)并完成了基礎(chǔ)圖形的繪制。本任務(wù)的重點(diǎn)是使用相應(yīng)的繪圖函數(shù)對(duì)目的圖形進(jìn)行繪制,難點(diǎn)是深入理解繪圖原理、正確選擇繪圖函數(shù)、正確設(shè)置繪圖數(shù)據(jù),需要在任務(wù)一基礎(chǔ)上對(duì)繪圖邏輯提高認(rèn)知?;诒救蝿?wù)的成果,我們對(duì)于Matplotlib繪制圖表的原理有了更加深入的了解和練習(xí),提高了繪圖實(shí)踐水平,通過(guò)案例更好地理解Matplotlib繪圖原理、掌握了繪圖方法。任務(wù)總結(jié)5繪制復(fù)雜圖形任務(wù)描述本任務(wù)對(duì)Matplotlib繪制破碎的水平條形圖、填充多邊形圖、帶漸變的條形圖、水平堆積條形圖、繪制棒棒糖圖、繪制百分位水平圖進(jìn)行講解與實(shí)踐,初步了解繪圖的基本步驟,認(rèn)知Matplotlib繪圖風(fēng)格與繪圖原理,從而在后續(xù)實(shí)踐操作中根據(jù)實(shí)際需求繪制所需圖形。通過(guò)學(xué)習(xí)本任務(wù)內(nèi)容,從畫布的設(shè)置到繪圖函數(shù)的正確調(diào)用,掌握更加復(fù)雜圖形的繪制,目的是掌握更多實(shí)用的Matplotlib圖形繪制方法。完成本任務(wù)需要學(xué)生進(jìn)一步加深對(duì)Matplotlib繪圖風(fēng)格和

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論