第7章 繪制3D圖表和統(tǒng)計圖_第1頁
第7章 繪制3D圖表和統(tǒng)計圖_第2頁
第7章 繪制3D圖表和統(tǒng)計圖_第3頁
第7章 繪制3D圖表和統(tǒng)計圖_第4頁
第7章 繪制3D圖表和統(tǒng)計圖_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章

繪制3D圖表和統(tǒng)計地圖·mplot3d工具包·

繪制常見的3D圖表·animation模塊·basemap工具包掌握掌握掌握

學習目標掌握mplot3d工具包的用法12掌握animation模塊的用法掌握basemap工具包的用法3目錄頁7.1使用mplot3d繪制3D圖表7.2使用animation制作動圖7.3使用basemap繪制統(tǒng)計地圖7.4本章小結目錄頁7.1使用mplot3d繪制3D圖表7.2使用animation制作動圖7.3使用basemap繪制統(tǒng)計地圖7.4本章小結7.1.1mplot3d概述matplotlib不僅專注于二維圖表的繪制,也具有繪制3D圖表、統(tǒng)計地圖的功能,并將這些功能分別封裝到工具包mpl_toolkits.mplot3d、mpl_toolkits.basemap中,另外可以結合animation模塊給圖表添加動畫效果。通過以下兩種方式可以創(chuàng)建Axes3D類的對象。

第一種:Axes3D()方法。第二種:add_subplot()方法。7.1.1mplot3d概述mplot3d是matplotlib中專門繪制3D圖表的工具包,它主要包含一個繼承自Axes的子類Axes3D,使用Axes3D類可以構建一個三維坐標系的繪圖區(qū)域。7.1.1mplot3d概述Axes3D()是構造方法,它直接用于構建一個Axes3D類的對象。Axes3D()方法Axes3D(fig,

rect=None,

*args,

azim=-60,

elev=30,

zscale=None,

sharez=None,

proj_type='persp',

**kwargs)語法fig:表示繪圖區(qū)域所屬的畫布。rect:表示確定三維坐標系位置的元組。7.1.1mplot3d概述在調(diào)用add_subplot()方法添加繪圖區(qū)域時為該方法傳入projection=‘3d’,即指定坐標系的類型為三維坐標系,并返回一個Axes3D類的對象。add_subplot()方法示例importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfig=plt.figure()ax=fig.add_subplot(111,projection='3d')7.1.1mplot3d概述官方推薦使用add_subplot()方法創(chuàng)建Axes3D類的對象。Axes3D類中提供了一些用于設置標題和坐標軸的方法,關于這些方法及說明具體如下表所示。7.1.1mplot3d概述常見的3D圖表包括3D線框圖、3D曲面圖、3D柱形圖、3D散點圖等。Axes3D類中提供了一些繪制3D圖表的方法,關于這些方法及其說明如下表所示。7.1.2繪制常見的3D圖表7.1.2繪制常見的3D圖表Axes3D類的對象使用plot_wireframe()方法繪制線框圖。

繪制3D線框圖plot_wireframe(self,

X,

Y,

Z,

*args,

**kwargs)語法X,Y,Z:表示x、y、z軸的數(shù)據(jù)。rcount,ccount:表示每個軸方向上使用的最大樣本量,默認為50。若輸入的樣本量更大,則會采用降采樣的方式減少樣本的數(shù)量;若輸入的樣本量為0,則不會對相應軸方向的數(shù)據(jù)進行采樣。rstride,cstride:表示采樣的密度。若僅使用參數(shù)rstride或cstride中任意一個,則另一個參數(shù)默認為0。7.1.2繪制常見的3D圖表繪制3D線框圖示例fig=plt.figure()ax=fig.add_subplot(111,projection='3d')#獲取測試數(shù)量X,Y,Z=axes3d.get_test_data(0.05)#繪制3D線框圖ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)plt.show()7.1.2繪制常見的3D圖表繪制3D曲面圖Axes3D類的對象使用plot_surface()方法繪制3D曲面圖。

plot_surface(self,

X,

Y,

Z,

*args,

norm=None,

vmin=None,

vmax=None,

lightsource=None,

**kwargs)語法X,Y,Z:表示x、y、z軸的數(shù)據(jù)。rcount,ccount:表示每個坐標軸方向上使用的最大樣本量,默認為50。rstride,cstride:表示采樣的密度。color:表示曲面的顏色。cmap:表示曲面的顏色映射表。shade:表示是否對曲面進行著色。7.1.2繪制常見的3D圖表繪制3D曲面圖示例x1=np.arange(-5,5,0.25)y1=np.arange(-5,5,0.25)x1,y1=np.meshgrid(x1,y1)r1=np.sqrt(x1**2+y1**2)z1=np.sin(r1)fig=plt.figure()ax=fig.add_subplot(111,projection='3d')#繪制曲面圖ax.plot_surface(x1,y1,z1,cmap=cm.coolwarm,linewidth=0,antialiased=False)#設置z軸刻度的范圍、位置、格式ax.set_zlim(-1.01,1.01)7.1.3實例1:三維空間的星星本實例要求根據(jù)一組測試數(shù)據(jù),繪制包含若干個五角星的3D散點圖,并將位于指定值范圍的五角星設置成指定的顏色:若10<z<20,設置五角星的顏色為#C71585;若z>=20,設置五角星的顏色為#008B8B;其他情況設置五角星的顏色為黃色。x=np.random.randint(0,40,30)y=np.random.randint(0,40,30)z=np.random.randint(0,40,30)測試數(shù)據(jù)7.1.3實例1:三維空間的星星星星總共有3種顏色,分別是#C71585、'#008B8B‘

、'y'標題為“3D散點圖”x、y、z軸的標簽依次為x軸、y軸、z軸目錄頁7.1使用mplot3d繪制3D圖表7.2使用animation制作動圖7.3使用basemap繪制統(tǒng)計地圖7.4本章小結7.2.1animation概述與靜態(tài)圖表相比,添加了動畫效果的動態(tài)圖表更加生動形象,更能激發(fā)用戶繼續(xù)探索數(shù)據(jù)的熱情。matplotlib在1.1版本的標準庫中加入了動畫模塊——animation,使用該模塊的Animation類可以實現(xiàn)一些基本的動畫效果。Animation類是一個動畫基類,它針對不同的行為分別派生了不同的子類,主要包括FuncAnimation和ArtistAnimation類。7.2.1animation概述FuncAnimation類表示基于重復調(diào)用一個函數(shù)的動畫。ArtistAnimation類表示基于一組固定Artist(標準的繪圖元素,比如文本、線條、矩形等)對象的動畫。7.2.1animation概述FuncAnimation類FuncAnimation是基于函數(shù)的動畫類,它通過重復地調(diào)用同一函數(shù)來制作動畫。FuncAnimation(fig,

func,

frames=None,

init_func=None,

fargs=None,

save_count=None,

*,

cache_frame_data=True,

**kwargs)構造方法fig:表示動畫所在的畫布。func:表示每幀動畫調(diào)用的函數(shù)。frames:表示動畫的長度(一次動畫包含的幀數(shù))。init_func:表示用于開始繪制幀的函數(shù),它會在第一幀動畫之前調(diào)用一次。若未設置該參數(shù),則程序將使用frames

序列中第一項的繪圖結果。fargs:表示傳遞給func函數(shù)的其它參數(shù)。interval:表示更新動畫的頻率,以毫秒為單位,默認為200。7.2.1animation概述示例x=np.arange(0,2*np.pi,0.01)fig,ax=plt.subplots()line,=ax.plot(x,np.sin(x))defanimate(i):line.set_ydata(np.sin(x+i/10.0))returnline,definit():line.set_ydata(np.sin(x))returnline,ani=FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=20,blit=False)正弦曲線移動效果7.2.1animation概述ArtistAnimation類ArtistAnimation是基于一組Artist對象的動畫類,它通過一幀一幀的數(shù)據(jù)制作動畫。ArtistAnimation(fig,

artists,

interval,repeat_delay,repeat,blit,*args,

**kwargs)語法fig:表示動畫所在的畫布。artists:表示一組Artist

對象的列表。interval:表示更新動畫的頻率,以毫秒為單位,默認為200。repeat_delay:表示再次播放動畫之前延遲的時長。repeat:表示是否重復播放動畫。7.2.1animation概述示例x=np.arange(0,2*np.pi,0.01)fig,ax=plt.subplots()arr=[]foriinrange(5):line=ax.plot(x,np.sin(x+i))arr.append(line)#根據(jù)arr存儲的一組圖形創(chuàng)建動畫ani=ArtistAnimation(fig=fig,artists=arr,repeat=True)7.2.1animation概述大家若不希望使用PyCharm工具運行程序,也可以先安裝ffmpeg或mencoder,之后使用Animation類的save()方法將每一幀動畫存儲為視頻文件。

7.2.2實例2:三維空間閃爍的星星本實例要求為7.2.3小節(jié)繪制的3D散點圖添加動畫,實現(xiàn)五角星由紅色到白色的閃爍效果。目錄頁7.1使用mplot3d繪制3D圖表7.2使用animation制作動圖7.3使用basemap繪制統(tǒng)計地圖7.4本章小結7.3.1basemap概述在數(shù)據(jù)可視化中,人們有時需將采集的數(shù)據(jù)按照其地理位置顯示到地圖上,常見于城市人口、飛機航線、礦藏分布等場景,有助于用戶理解與空間有關的信息。basemap是matplotlib中的地圖工具包,它本身不會參與任何繪圖操作,而是會將給定的地理坐標轉換到地圖投影上,之后將數(shù)據(jù)交給matplotlib進行繪圖。7.3.1basemap概述安裝basemap

在Anaconda中安裝basemap的方式比較簡單,可以直接在AnacondaPrompt工具中輸入如下命令:condainstallbasemap語法執(zhí)行以上命令后,conda命令會自動解析當前的Python環(huán)境并下載當前環(huán)境對應的basemap包。需要說明的是,在命令執(zhí)行的過程中會詢問用戶是否安裝,用戶只需同意即可。7.3.1basemap概述安裝basemap

安裝完成后,在AnacondaPrompt的命令提示符后面輸入python,之后輸入如下導入語句:frommpl_toolkits.basemapimportBasemap示例代碼執(zhí)行完以上語句后,若AnacondaPrompt中沒有出現(xiàn)錯誤信息,則表明basemap安裝成功,否則表明安裝失敗。7.3.1basemap概述安裝basemap

在JupyterNotebook工具中導入basemap工具包時,運行會出現(xiàn)“KeyError:’PROJ_LIB’”錯誤。程序之所以產(chǎn)生“KeyError:’PROJ_LIB’”錯誤,是因為basemap依賴的proj4模塊未設置環(huán)境變量。大家可以參考/weixin_39278265/article/details/84019778網(wǎng)址中推薦的解決方式。7.3.1basemap概述basemap工具包中主要包含一個表示基礎地圖背景的Basemap類,通過創(chuàng)建Basemap類的對象可以指定地圖投影的類型和要處理的地球區(qū)域。Basemap(llcrnrlon=None,

llcrnrlat=None,

urcrnrlon=None,

urcrnrlat=None,

llcrnrx=None,

…,

ax=None)語法lon_0,lat_0:表示所需地圖投影區(qū)域中心的經(jīng)度或緯度。llcrnrlon,llcrnrlat:表示地圖投影區(qū)域左下角的經(jīng)度或緯度。urcrnrlon,urcrnrlat:表示地圖投影區(qū)域右上角的經(jīng)度或緯度。width,height:表示所需地圖投影區(qū)域的寬度和高度。rsphere:表示投影中使用的球體的半徑。使用basemap

7.3.1basemap概述resolution:表示包括海岸線、湖泊等的分辨率,可以取值為’c’(粗略,默認值)、’l’(低)、’i’(中級)、’h’(高)、’f’(完整)或None。area_thresh:表示不會繪制海岸線或湖泊的閾值。anchor:表示地圖置于繪圖區(qū)域的方式,默認為C,表示地圖居中。projection:表示地圖投影的類型,默認值為cyl。使用basemap

basemap工具包中主要包含一個表示基礎地圖背景的Basemap類,通過創(chuàng)建Basemap類的對象可以指定地圖投影的類型和要處理的地球區(qū)域。Basemap(llcrnrlon=None,

llcrnrlat=None,

urcrnrlon=None,

urcrnrlat=None,

llcrnrx=None,

…,

ax=None)語法7.3.1basemap概述使用basemap

Projection參數(shù)的常用取值及說明如右表所示。

7.3.1basemap概述確定地圖背景的投影區(qū)域之后,用戶還需要對待處理的區(qū)域進行完善,為該區(qū)域繪制河岸線、河流和地區(qū)或國家邊界等。Basemap類中提供了一些繪制地圖背景的方法。使用basemap

7.3.1basema

溫馨提示

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

評論

0/150

提交評論