Python數(shù)據(jù)可視化(第2版)課件 第7章 高級(jí)圖表繪制_第1頁(yè)
Python數(shù)據(jù)可視化(第2版)課件 第7章 高級(jí)圖表繪制_第2頁(yè)
Python數(shù)據(jù)可視化(第2版)課件 第7章 高級(jí)圖表繪制_第3頁(yè)
Python數(shù)據(jù)可視化(第2版)課件 第7章 高級(jí)圖表繪制_第4頁(yè)
Python數(shù)據(jù)可視化(第2版)課件 第7章 高級(jí)圖表繪制_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

第7章高級(jí)圖表繪制《Python數(shù)據(jù)可視化(第2版)

》學(xué)習(xí)目標(biāo)/Target

了解三維圖表,能夠歸納常見(jiàn)三維圖表的特點(diǎn)及解讀方式

掌握mplot3d模塊使用,能夠構(gòu)建三維坐標(biāo)系的繪圖區(qū)域并添加輔助元素

掌握三維散點(diǎn)圖和三維曲面圖的繪制方式,能夠通過(guò)scatter()和plot_surface()方法繪圖三維散點(diǎn)圖和三維曲面圖學(xué)習(xí)目標(biāo)/Target

掌握animation模塊的使用,能夠通過(guò)該模塊中的FuncAnimation和ArtistAnimation類給圖表添加動(dòng)畫(huà)

掌握熱力圖的繪制方式,能夠熟練繪制熱力圖并添加注釋文本

掌握?;鶊D的繪制方式,能夠熟練繪制?;鶊D章節(jié)概述/SummaryMatplotlib不僅支持二維圖表的繪制,它的mpl_toolkits和animation模塊中也提供了繪制三維圖表和動(dòng)態(tài)圖表的功能,這意味著用戶可以輕松繪制各種三維圖表,并為圖表添加動(dòng)畫(huà)效果。此外,Matplotlib還提供了繪制一些其他高級(jí)圖表的功能,比如熱力圖、漏斗圖、?;鶊D和瀑布圖等。本章將對(duì)繪制高級(jí)圖表的相關(guān)內(nèi)容進(jìn)行詳細(xì)介紹。目錄/Contents01繪制三維圖表02繪制動(dòng)態(tài)圖表03繪制熱力圖04繪制桑基圖繪制三維圖表7.17.1.1認(rèn)識(shí)三維圖表了解三維圖表,能夠歸納常見(jiàn)三維圖表的特點(diǎn)及解讀方式學(xué)習(xí)目標(biāo)7.1.1認(rèn)識(shí)三維圖表三維圖表的介紹三維圖表是指在三維坐標(biāo)系中可視化數(shù)據(jù)的圖表,三維坐標(biāo)系有3個(gè)相互垂直的坐標(biāo)軸,分別為x軸、y軸和z軸。x軸表示水平方向,y軸表示垂直方向,z軸表示深度方向。這三個(gè)坐標(biāo)軸在原點(diǎn)處交匯,共同定義了三維空間中的位置。與傳統(tǒng)的二維圖表相比,三維圖表能夠更全面、直觀地呈現(xiàn)三維數(shù)據(jù),展示更豐富的信息和復(fù)雜的維度關(guān)系,并且具有更強(qiáng)的視覺(jué)沖擊力。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表1.三維散點(diǎn)圖三維散點(diǎn)圖是一種使用三維坐標(biāo)系來(lái)顯示離散數(shù)據(jù)點(diǎn)的圖表類型,每個(gè)數(shù)據(jù)點(diǎn)由三個(gè)數(shù)值組成,分別對(duì)應(yīng)于x軸、y軸和z軸上的坐標(biāo)。通過(guò)三維散點(diǎn)圖,可以同時(shí)展示三個(gè)變量之間的關(guān)系,幫助用戶理解數(shù)據(jù)的分布情況、變化趨勢(shì)和聚集程度。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表1.三維散點(diǎn)圖觀察三維散點(diǎn)圖時(shí),可以關(guān)注以下幾點(diǎn):數(shù)據(jù)點(diǎn)的位置:觀察每個(gè)數(shù)據(jù)點(diǎn)在三維坐標(biāo)系中的位置,可以獲得數(shù)據(jù)的分布情況。數(shù)據(jù)點(diǎn)的密度:觀察在某個(gè)區(qū)域內(nèi)數(shù)據(jù)點(diǎn)的密度,可以了解該區(qū)域的數(shù)據(jù)分布程度。密集的區(qū)域表示數(shù)據(jù)更集中,而稀疏的區(qū)域表示數(shù)據(jù)更分散。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表2.三維柱形圖三維柱形圖是一種通過(guò)在三維坐標(biāo)系中繪制柱子來(lái)展示數(shù)據(jù)分布和關(guān)系的圖表類型。在三維柱形圖中,每根柱子的高度表示相應(yīng)數(shù)據(jù)的大小,其橫向和縱向的位置則反映其在不同類別或組的數(shù)值。通過(guò)在三維空間內(nèi)繪制若干個(gè)柱子,即可同時(shí)展示多個(gè)類別或組之間的關(guān)系和數(shù)據(jù)分布狀況。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表2.三維柱形圖觀察三維柱形圖時(shí),可以關(guān)注以下幾點(diǎn):每根柱子的高度:柱子的高度代表了相應(yīng)數(shù)據(jù)的大小,觀察柱子的高度差異可以比較不同類別或組的數(shù)據(jù)大小。每根柱子的位置:柱子的位置反映了相應(yīng)數(shù)據(jù)在兩個(gè)類別或組的數(shù)值,觀察柱子的橫向和縱向位置可以了解不同類別或組之間的數(shù)據(jù)關(guān)系。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表3.三維線圖三維線圖是一種通過(guò)在三維坐標(biāo)系中繪制線條來(lái)展示數(shù)據(jù)之間的連續(xù)性和趨勢(shì)的圖表類型。在三維線圖中,每條線代表了數(shù)據(jù)點(diǎn)在三維空間中的連續(xù)路徑。通過(guò)此路徑,可以觀察數(shù)據(jù)在三個(gè)維度上的變化趨勢(shì)和模式。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表3.三維線圖觀察三維線圖時(shí),可以關(guān)注以下幾點(diǎn):線條的路徑和變化趨勢(shì):通過(guò)觀察線條的路徑,可以了解數(shù)據(jù)在三維空間中的變化趨勢(shì)和走勢(shì)。連續(xù)的線條可以顯示數(shù)據(jù)的變化路徑,其起伏和變化幅度可以反映數(shù)據(jù)的波動(dòng)。線條之間的交叉和重疊:如果三維線圖中有多條線,則可以注意它們之間的交叉和重疊情況,這些交叉和重疊部分可能表示數(shù)據(jù)之間的相互影響和關(guān)聯(lián)性。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表4.三維曲面圖三維曲面圖是一種通過(guò)在三維空間中繪制曲面來(lái)呈現(xiàn)數(shù)據(jù)的圖表類型。在三維曲面圖中,曲面通常由一個(gè)二元函數(shù)創(chuàng)建,通過(guò)將x坐標(biāo)和y坐標(biāo)的數(shù)值代入二元函數(shù),可以得到相應(yīng)的z值,從而確定曲面在三維空間中的位置。這種圖表可以直觀地呈現(xiàn)二元函數(shù)的形狀和三維空間中的形態(tài)。7.1.1認(rèn)識(shí)三維圖表常見(jiàn)的三維圖表4.三維曲面圖觀察三維曲面圖時(shí),可以關(guān)注以下幾點(diǎn):曲面的形態(tài)和分布:三維曲面圖可以清晰地展示數(shù)據(jù)的分布和形態(tài)特征。曲面的高度和形狀差異:觀察曲面在不同區(qū)域的高度和形狀差異,可以比較不同區(qū)域數(shù)據(jù)的數(shù)量和大小差異。曲面的相交部分:如果三維曲面圖中存在多個(gè)曲面,可以關(guān)注它們的相交部分,這些地方可能表示數(shù)據(jù)之間的交匯點(diǎn),可以進(jìn)一步分析數(shù)據(jù)之間的相關(guān)性。7.1.2mplot3d概述掌握mplot3d模塊的使用,能夠使用mplot3d模塊構(gòu)建三維坐標(biāo)系的繪圖區(qū)域,并為其添加一些輔助元素學(xué)習(xí)目標(biāo)7.1.2mplot3d概述Axes3D類的介紹mplot3d是mpl_toolkits模塊中的一個(gè)子模塊,它提供了用于繪制和操作三維圖表的工具和函數(shù),通過(guò)這些函數(shù)和工具可以幫助用戶快速地繪制一些常見(jiàn)的三維圖表,并能夠?qū)D表的輔助元素進(jìn)行定制。mplot3d模塊中包含一個(gè)非常重要的類Axes3D,Axes3D繼承

自Axes

類,這意味著它不僅擁有Axes

類的大部分功能,而且在此基礎(chǔ)上擴(kuò)展了繪制三維圖形所需的特定方法和屬性。7.1.2mplot3d概述創(chuàng)建Axes3D類的對(duì)象通過(guò)Axes3D類實(shí)例化的對(duì)象可以構(gòu)建一個(gè)三維坐標(biāo)系的繪圖區(qū)域。Matplotlib中主要可以通過(guò)兩種方式創(chuàng)建Axes3D類的對(duì)象,進(jìn)而構(gòu)建一個(gè)三維坐標(biāo)系的繪圖區(qū)域,一種方式是通過(guò)Axes3D類的構(gòu)造方法創(chuàng)建對(duì)象,并指定其所屬的畫(huà)布;另一種方式是調(diào)用add_subplot()方法添加繪圖區(qū)域時(shí)指定其使用三維坐標(biāo)系。7.1.2mplot3d概述創(chuàng)建Axes3D類的對(duì)象1.通過(guò)Axes3D類的構(gòu)造方法創(chuàng)建對(duì)象Axes3D類的構(gòu)造方法用于直接創(chuàng)建一個(gè)Axes3D類的對(duì)象。Axes3D(fig,

rect=None,

*args,

elev=30,

azim=-60,

roll=0,

sharez=None,proj_type='persp',

……,

focal_length=None,

**kwargs)fig:表示三維坐標(biāo)系繪圖區(qū)域所屬的畫(huà)布。rect:用于指定三維坐標(biāo)系繪圖區(qū)域的位置和尺寸,該參數(shù)需要接收一個(gè)形似(left,bottom,width,height)的四元組,每個(gè)元素的值應(yīng)該在0和1之間,其中l(wèi)eft和bottom用于指定繪圖區(qū)域在畫(huà)布左下角的位置,width和height用于指定繪圖區(qū)域的寬度和高度。若不指定,則將使用整個(gè)畫(huà)布的區(qū)域。7.1.2mplot3d概述創(chuàng)建Axes3D類的對(duì)象1.通過(guò)Axes3D類的構(gòu)造方法創(chuàng)建對(duì)象importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfig=plt.figure()#創(chuàng)建Axes3D類的對(duì)象,并指定其所屬的畫(huà)布ax_3d=Axes3D(fig)7.1.2mplot3d概述創(chuàng)建Axes3D類的對(duì)象2.通過(guò)add_subplot()方法創(chuàng)建對(duì)象importmatplotlib.pyplotaspltfig=plt.figure()#添加繪圖區(qū)域,并指定投影類型為三維坐標(biāo)系ax_3d=fig.add_subplot(projection='3d')在調(diào)用add_subplot()方法添加繪圖區(qū)域時(shí),可以在該方法中傳入projection='三維',即指定繪圖區(qū)域使用的投影類型為三維坐標(biāo)系,此時(shí)該方法會(huì)返回一個(gè)Axes3D類的對(duì)象。值得一提的是,官方推薦使用第2種方式創(chuàng)建Axes3D類的對(duì)象。7.1.2mplot3d概述Axes3D

類常用的設(shè)置方法Axes3D

類提供了許多方法,用于對(duì)三維坐標(biāo)系的繪圖區(qū)域進(jìn)行設(shè)置和控制,包括設(shè)置坐標(biāo)軸的標(biāo)簽、設(shè)置坐標(biāo)軸的標(biāo)題、設(shè)置觀察者視角等,幫助用戶創(chuàng)建和編輯三維圖表。方法說(shuō)明set_title()添加標(biāo)題set_xlabel()、set_ylabel()、set_zlabel()設(shè)置x軸、y軸、z軸的標(biāo)簽set_xlim()、set_ylim()、set_zlim()設(shè)置x軸、y軸、z軸的刻度范圍text()在三維坐標(biāo)系的繪圖區(qū)域中添加注釋文本tick_params()修改刻度和刻度標(biāo)簽的樣式view_init()設(shè)置觀察者的視角set_zticks()設(shè)置z軸的刻度set_zticklabels()設(shè)置z軸的刻度標(biāo)簽Axes3D類的常用方法7.1.2mplot3d概述Axes3D

類方法的示例#添加標(biāo)題ax_3d.set_title('三維圖表')#設(shè)置x軸的標(biāo)簽ax_3d.set_xlabel('x軸')#設(shè)置y軸的標(biāo)簽ax_3d.set_ylabel('y軸')#設(shè)置z軸的標(biāo)簽ax_3d.set_zlabel('z軸')示例:在三維坐標(biāo)系的繪圖區(qū)域中添加標(biāo)題,以及設(shè)置坐標(biāo)軸的標(biāo)簽7.1.3繪制常見(jiàn)三維圖表掌握三維散點(diǎn)圖和三維曲面圖的繪制方式,能夠通過(guò)scatter()和plot_surface()方法繪圖三維散點(diǎn)圖和三維曲面圖學(xué)習(xí)目標(biāo)7.1.3繪制常見(jiàn)三維圖表Axes3D類常用的繪圖方法在Matplotlib中,Axes3D類提供了豐富的繪圖方法,通過(guò)這些方法可以在三維坐標(biāo)系的繪圖區(qū)域中繪制各二維或三維圖形。方法說(shuō)明plot()繪制三維線圖plot_wireframe()繪制三維線框圖,plot_surface()繪制三維曲面圖bar()繪制三維柱形圖,柱形是二維平面的bar三維()繪制三維柱形圖,柱形是立體的scatter()繪圖三維散點(diǎn)圖contour三維()繪制三維等高線圖contourf三維()繪制三維填充等高線圖Axes3D類常用的繪圖方法7.1.3繪制常見(jiàn)三維圖表繪制三維散點(diǎn)圖1.繪制三維散點(diǎn)圖使用Axes3D類的scatter()方法可以繪制三維散點(diǎn)圖。scatter(xs,

ys,

zs=0,

zdir='z',

s=20,

c=None,

depthshade=True,

*args,

data=None,

**kwargs)xs,ys,zs:表示數(shù)據(jù)點(diǎn)的x、y、z坐標(biāo),其中zs是可選的,默認(rèn)值為0。zdir:表示繪圖時(shí)將哪個(gè)軸作為z軸來(lái)進(jìn)行深度投影,默認(rèn)值為z,即將z軸作為深度方向。s:表示數(shù)據(jù)點(diǎn)的大小,默認(rèn)值為20點(diǎn)。c:表示數(shù)據(jù)點(diǎn)的顏色,默認(rèn)值為None,即使用默認(rèn)的顏色。7.1.3繪制常見(jiàn)三維圖表繪制三維散點(diǎn)圖1.繪制三維散點(diǎn)圖創(chuàng)建一個(gè)擁有三維坐標(biāo)系的繪圖區(qū)域,并在該區(qū)域上繪制三維散點(diǎn)圖。fig=plt.figure()ax_3d=fig.add_subplot(

projection='三維')x_data=np.random.randint(1,10,10)y_data=np.random.randint(1,20,10)z_data=np.random.randint(1,30,10)#繪制三維散點(diǎn)圖ax_3d.scatter(x_data,y_data,

z_data,c='red')7.1.3繪制常見(jiàn)三維圖表繪制三維曲面圖2.繪制三維曲面圖使用Axes3D類的plot_surface()可以繪制三維曲面圖。plot_surface(X,

Y,

Z,

*,

norm=None,

vmin=None,

vmax=None,

lightsource=None,

cmap=None,linewidth=0.5,antialiased=True,**kwargs)X,Y,Z:表示數(shù)據(jù)點(diǎn)的x、y、z坐標(biāo),這些參數(shù)都需要接收一個(gè)二維數(shù)組。norm:表示描述繪圖顏色的歸一化方式。vmin,vmax:用于指定顏色映射的最小值和最大值。如果它們的值為None,則會(huì)根據(jù)數(shù)據(jù)自動(dòng)確定最小值和最大值cmap:表示曲面的顏色映射表。linewidth:表示線條的寬度,默認(rèn)值為0.5。antialiased:表示是否使用抗鋸齒渲染,默認(rèn)值為T(mén)rue。7.1.3繪制常見(jiàn)三維圖表繪制三維曲面圖2.繪制三維曲面圖創(chuàng)建一個(gè)擁有三維坐標(biāo)系的繪圖區(qū)域,并在該區(qū)域上繪制三維曲面圖。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_3d=fig.add_subplot(projection='三維')ax_3d.plot_surface(x1,y1,z1,

cmap=cm.coolwarm,linewidth=0,antialiased=False)7.1.4實(shí)例1:三維空間的星星掌握實(shí)例1的目標(biāo)和思路,能夠編寫(xiě)程序來(lái)繪制三維散點(diǎn)圖學(xué)習(xí)目標(biāo)7.1.4實(shí)例1:三維空間的星星三維空間的星星在三維空間中,我們能夠欣賞到許多令人驚嘆的景象,其中引人注目的事物之一就是星星。星星點(diǎn)點(diǎn)閃爍在無(wú)盡的宇宙中,勾勒出神秘而迷人的圖景。通過(guò)繪制三維星星場(chǎng)景,能夠創(chuàng)造出生動(dòng)、逼真的場(chǎng)景,展示出星星的面貌,形成絢麗多彩的畫(huà)面。三維空間的星星可以用三維散點(diǎn)圖繪制,每個(gè)星星對(duì)應(yīng)三維坐標(biāo)系中的一個(gè)數(shù)據(jù)點(diǎn),數(shù)據(jù)點(diǎn)的形狀是星形的。下面以30個(gè)隨機(jī)數(shù)為例,根據(jù)這些隨機(jī)數(shù)繪制一張三維散點(diǎn)圖,模擬三維空間星星的效果:星星的顏色由z值決定,若10<z<20,則星星的顏色是#C71585;若z>=20,則星星的顏色是#008B8B;其他情況下星星的顏色是黃色。每個(gè)星星都有描邊,描邊的寬度為1,顏色為黑色。7.1.4實(shí)例1:三維空間的星星實(shí)例1的需求繪制動(dòng)態(tài)圖表7.27.2.1使用animation添加動(dòng)畫(huà)掌握animation模塊的使用,能夠通過(guò)該模塊中的FuncAnimation和ArtistAnimation類給圖表添加動(dòng)畫(huà)學(xué)習(xí)目標(biāo)7.2.1使用animation添加動(dòng)畫(huà)Animation類及其子類在Matplotlib中,animation模塊提供了創(chuàng)建動(dòng)畫(huà)的功能,該模塊中定義了一個(gè)動(dòng)畫(huà)基類Animation類,Animation類針對(duì)不同的行為分別派生了不同的子類,主要包括FuncAnimation類和ArtistAnimation類。其中,F(xiàn)uncAnimation類用于創(chuàng)建基于函數(shù)的動(dòng)畫(huà);ArtistAnimation類用于創(chuàng)建基于一組固定Artist對(duì)象(標(biāo)準(zhǔn)的繪圖元素,比如文本、線條、矩形等)的動(dòng)畫(huà)。7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類1.FuncAnimation類FuncAnimation類通過(guò)重復(fù)調(diào)用函數(shù)創(chuàng)建動(dòng)畫(huà),它可以指定一個(gè)更新函數(shù),該函數(shù)會(huì)在每一幀動(dòng)畫(huà)繪制時(shí)被調(diào)用一次,這樣就可以在圖表中更新數(shù)據(jù)。另外,用戶也可以設(shè)置動(dòng)畫(huà)的幀數(shù)、間隔時(shí)間等參數(shù)來(lái)調(diào)整動(dòng)畫(huà)的效果。FuncAnimation(fig,

func,

frames=None,

init_func=None,

fargs=None,

save_count=None,

*,

cache_frame_data=True,

interval=200,blit=False,**kwargs)fig:用于指定添加動(dòng)畫(huà)的畫(huà)布。func:表示每幀動(dòng)畫(huà)繪制前被調(diào)用的函數(shù),該函數(shù)用于定制每一幀動(dòng)畫(huà)繪制的操作,比如更新圖表數(shù)據(jù)、調(diào)整圖表樣式、添加或刪除圖形元素等,以實(shí)現(xiàn)相應(yīng)的動(dòng)畫(huà)效果。該函數(shù)一般需要包含一個(gè)參數(shù)frame,用于接收當(dāng)前動(dòng)畫(huà)的幀數(shù),如果動(dòng)畫(huà)的總幀數(shù)為10,則frame的值將從0遞增到9,函數(shù)會(huì)返回Artist及其子類對(duì)象。7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類1.FuncAnimation類frames:表示動(dòng)畫(huà)的總幀數(shù)。該參數(shù)的值可以是整數(shù)或可迭代對(duì)象,如果是整數(shù),則用于指定動(dòng)畫(huà)的總幀數(shù);如果是可迭代對(duì)象,則動(dòng)畫(huà)將根據(jù)可迭代對(duì)象的長(zhǎng)度播放。init_func:表示動(dòng)畫(huà)初始狀態(tài)的函數(shù),它會(huì)在動(dòng)畫(huà)開(kāi)始前被調(diào)用一次。若未設(shè)置該參數(shù),則將使用frames中第一項(xiàng)的繪制結(jié)果。FuncAnimation類通過(guò)重復(fù)調(diào)用函數(shù)創(chuàng)建動(dòng)畫(huà),它可以指定一個(gè)更新函數(shù),該函數(shù)會(huì)在每一幀動(dòng)畫(huà)繪制時(shí)被調(diào)用一次,這樣就可以在圖表中更新數(shù)據(jù)。另外,用戶也可以設(shè)置動(dòng)畫(huà)的幀數(shù)、間隔時(shí)間等參數(shù)來(lái)調(diào)整動(dòng)畫(huà)的效果。FuncAnimation(fig,

func,

frames=None,

init_func=None,

fargs=None,

save_count=None,

*,

cache_frame_data=True,

interval=200,blit=False,**kwargs)7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類1.FuncAnimation類fargs:表示func函數(shù)的額外參數(shù)。interval:表示幀與幀之間的時(shí)間間隔,單位為毫秒,默認(rèn)值為200毫秒。blit:表示是否使用blit技術(shù)加快動(dòng)畫(huà)繪制的速度,默認(rèn)為False。官方推薦將blit參數(shù)設(shè)為T(mén)rue,但建議macOS的用戶將blit參數(shù)設(shè)為False,否則可能會(huì)導(dǎo)致動(dòng)畫(huà)無(wú)法正確顯示。FuncAnimation類通過(guò)重復(fù)調(diào)用函數(shù)創(chuàng)建動(dòng)畫(huà),它可以指定一個(gè)更新函數(shù),該函數(shù)會(huì)在每一幀動(dòng)畫(huà)繪制時(shí)被調(diào)用一次,這樣就可以在圖表中更新數(shù)據(jù)。另外,用戶也可以設(shè)置動(dòng)畫(huà)的幀數(shù)、間隔時(shí)間等參數(shù)來(lái)調(diào)整動(dòng)畫(huà)的效果。FuncAnimation(fig,

func,

frames=None,

init_func=None,

fargs=None,

save_count=None,

*,

cache_frame_data=True,

interval=200,blit=False,**kwargs)7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類1.FuncAnimation類通過(guò)FuncAnimation類的構(gòu)造方法創(chuàng)建動(dòng)畫(huà),實(shí)現(xiàn)正弦曲線沿著x軸向左移動(dòng)的效果。defanimate(frame):line.set_ydata(np.sin(

x+frame/10.0))

returnlinedefinit():line.set_ydata(np.sin(x))returnlinefunc_ani=FuncAnimation(

fig=fig,func=animate,

frames=100,

init_func=init,

interval=100)7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類2.ArtistAnimation類ArtistAnimation是基于一組Artist對(duì)象的動(dòng)畫(huà)類,它用于將一系列圖形對(duì)象組織在一起,按照一定的順序依次將這些圖形對(duì)象繪制在每一幀上,從而形成動(dòng)畫(huà)效果。ArtistAnimation(fig,

artists,

interval=200,repeat_delay=0,repeat=True,blit=False,*args,

**kwargs)fig:用于指定添加動(dòng)畫(huà)的畫(huà)布。artists:表示包含一組Artist對(duì)象的列表。interval:表示幀與幀之間的時(shí)間間隔,單位為毫秒,默認(rèn)值為200毫秒。repeat_delay:動(dòng)畫(huà)結(jié)束后的延遲時(shí)間,以毫秒為單位,默認(rèn)值為0毫秒。repeat:表示是否重復(fù)播放動(dòng)畫(huà),默認(rèn)值為T(mén)rue,即重復(fù)播放動(dòng)畫(huà)。blit:表示是否使用blit技術(shù)加快動(dòng)畫(huà)繪制的速度,默認(rèn)值為False。7.2.1使用animation添加動(dòng)畫(huà)FuncAnimation類2.ArtistAnimation類fig,ax=plt.subplots()x=np.arange(0,2*np.pi,0.01)ar_list=[]foriinrange(100):line=ax.plot(x,np.sin(x+i/10.0),c='blue')ar_list.append(line)#創(chuàng)建動(dòng)畫(huà)artist_ani=ArtistAnimation(

fig=fig,artists=ar_list,

interval=100)通過(guò)ArtistAnimation類的構(gòu)造方法創(chuàng)建動(dòng)畫(huà),實(shí)現(xiàn)正弦曲線沿x軸向左移動(dòng)的效果。7.2.2實(shí)例2:三維空間閃爍的星星掌握實(shí)例2的目標(biāo)和思路,能夠編寫(xiě)程序來(lái)繪制有動(dòng)畫(huà)效果的三維散點(diǎn)圖學(xué)習(xí)目標(biāo)7.2.2實(shí)例2:三維空間閃爍的星星實(shí)例2的需求在7.1.4小節(jié)的三維散點(diǎn)圖中,每個(gè)星星都分布在三維坐標(biāo)系的任意位置,且根據(jù)位置顯示了顏色。為了使星星的形象更加生動(dòng)逼真,這里將在三維散點(diǎn)圖中添加動(dòng)畫(huà),使星星的顏色在白色和黃色之間交替變換,從而實(shí)現(xiàn)星星閃爍的效果7.2.2實(shí)例2:三維空間閃爍的星星實(shí)例2的需求繪制熱力圖7.37.3繪制熱力圖掌握熱力圖的繪制方式,能夠熟練繪制熱力圖并添加注釋文本學(xué)習(xí)目標(biāo)7.3繪制熱力圖熱力圖的介紹熱力圖是一種用顏色表達(dá)數(shù)據(jù)密度或強(qiáng)度的圖表,它將數(shù)據(jù)以不同顏色的矩陣形式呈現(xiàn)在二維空間中,用于展示數(shù)據(jù)的分布情況和集中程度,在許多領(lǐng)域被廣泛使用,包括生命科學(xué)、金融市場(chǎng)、地理信息系統(tǒng)等,能夠幫助用戶觀察數(shù)據(jù)的趨勢(shì)和模式。7.3繪制熱力圖熱力圖的基本構(gòu)成數(shù)據(jù)矩陣是矩形網(wǎng)格結(jié)構(gòu)的色彩區(qū)域,用于表示二維數(shù)據(jù)的行和列。整個(gè)色彩區(qū)域被分割成大小相等的單元格,每個(gè)單元格對(duì)應(yīng)一個(gè)數(shù)據(jù)點(diǎn),單元格的顏色表示數(shù)據(jù)點(diǎn)的數(shù)值。7.3繪制熱力圖熱力圖的基本構(gòu)成色標(biāo)是一個(gè)顏色漸變的條形,通常位于熱力圖的一側(cè)或下方,用于解釋熱力圖中顏色和數(shù)值之間的對(duì)應(yīng)關(guān)系。色標(biāo)從左到右或從上到下,顏色會(huì)從淺色逐漸變?yōu)樯钌蛘呱钌饾u變?yōu)闇\色,顏色的改變對(duì)應(yīng)著數(shù)值范圍的變化。7.3繪制熱力圖繪制熱力圖的基本思路在Matplotlib中,繪制熱力圖的基本思路比較簡(jiǎn)單,首先使用pyplot模塊的imshow()函數(shù)繪制數(shù)據(jù)矩陣,然后使用pyplot模塊的colorbar()函數(shù)添加色標(biāo)。7.3繪制熱力圖繪制熱力圖的基本思路1.繪制數(shù)據(jù)矩陣imshow()函數(shù)能夠根據(jù)二維數(shù)組生成一個(gè)數(shù)據(jù)矩陣,并將數(shù)據(jù)矩陣中每個(gè)單元格按照不同的數(shù)值大小映射為相應(yīng)的顏色。imshow(X,

cmap=None,

norm=None,

*,

aspect=None,

interpolation=None,

alpha=None,

vmin=None,

……,

url=None,

data=None,

**kwargs)X:表示用于繪制數(shù)據(jù)矩陣的數(shù)組,數(shù)組的形狀可以是

(M,N)、(M,N,3)或(M,N,4),其中M和N分別表示數(shù)據(jù)矩陣的行數(shù)和列數(shù)。當(dāng)X的形狀為

(M,N)時(shí),表示一個(gè)灰度矩陣,每個(gè)單元格的數(shù)值表示灰度級(jí)別,數(shù)值越大則灰度越大;當(dāng)X的形狀為(M,N,3)時(shí),表示一個(gè)彩色矩陣,3表示RGB三原色,每個(gè)單元格的顏色由R、G、B三種顏色組成,每種顏色的取值范圍為浮點(diǎn)數(shù)0~1或整數(shù)0~255;當(dāng)X的形狀為(M,N,4)時(shí),表示一個(gè)帶透明度通道的彩色矩陣,

4表示RGBA四種顏色通道,每個(gè)單元格的顏色由R、G、B和透明度A組成,取值范圍為浮點(diǎn)數(shù)0~1或整數(shù)0~255。7.3繪制熱力圖繪制熱力圖的基本思路1.繪制數(shù)據(jù)矩陣imshow()函數(shù)能夠根據(jù)二維數(shù)組生成一個(gè)數(shù)據(jù)矩陣,并將數(shù)據(jù)矩陣中每個(gè)單元格按照不同的數(shù)值大小映射為相應(yīng)的顏色。imshow(X,

cmap=None,

norm=None,

*,

aspect=None,

interpolation=None,

alpha=None,

vmin=None,

……,

url=None,

data=None,

**kwargs)cmap:表示繪制數(shù)據(jù)矩陣時(shí)使用的顏色映射表,默認(rèn)值為None,即使用默認(rèn)的顏色映射表viridis。注意,如果X直接使用了RGB或RGBA定義的顏色值,則參數(shù)cmap將被忽略。aspect:表示繪制圖像的寬高比,默認(rèn)值為

None,表示根據(jù)圖像的數(shù)據(jù)自動(dòng)計(jì)算寬高比。alpha:表示圖像的透明度。默認(rèn)值為

None,即不設(shè)置透明度。imshow()函數(shù)調(diào)用成功后會(huì)返回一個(gè)AxesImage類的對(duì)象,即代表繪制出來(lái)的圖像。7.3繪制熱力圖繪制熱力圖的基本思路2.添加色標(biāo)colorbar()函數(shù)用于在圖像旁邊添加色標(biāo),以標(biāo)識(shí)圖像中顏色的含義。colorbar(mappable=None,

cax=None,

ax=None,

**kwargs)mappable:表示帶有可映射數(shù)據(jù)的對(duì)象,通常是

imshow()

函數(shù)的返回值。cax:用于指定色標(biāo)將添加到哪個(gè)繪圖區(qū)域。默認(rèn)值為None,即自動(dòng)為色標(biāo)創(chuàng)建一個(gè)新的繪圖區(qū)域。ax:用于指定色標(biāo)將添加到哪個(gè)繪圖區(qū)域。默認(rèn)值為None,即將色標(biāo)添加到當(dāng)前的繪圖區(qū)域。注意,如果已經(jīng)使用了參數(shù)

cax,則將忽略ax參數(shù)。**kwargs:其他用于控制色標(biāo)外觀和行為的參數(shù)。例如,orientation

參數(shù)用于設(shè)置色標(biāo)的方向,它支持的取值包括‘vertical’(垂直,默認(rèn)值)和‘horizontal’(水平),location參數(shù)用于設(shè)置色標(biāo)的位置,它支持的取值包括‘left’(色標(biāo)位于圖像左側(cè))、'right'(色標(biāo)位于圖像右側(cè),默認(rèn)值)、'top'(色標(biāo)位于圖像頂部)、'bottom'(色標(biāo)位于圖像底部)等。7.3繪制熱力圖繪制熱力圖的示例importnumpyasnpimportmatplotlib.pyplotasplt#繪制數(shù)據(jù)矩陣arr_2d=np.round(np.random.rand(10,

10),1)heatmap=plt.imshow(arr_2d,cmap='hot_r')#添加色標(biāo)cbar=plt.colorbar(heatmap)plt.show()示例:繪制熱力圖7.3繪制熱力圖繪制熱力圖的示例plt.title('熱力圖示例')labels=['a','b','c','d','e',

'f','g','h','i','j']plt.xticks(np.arange(len(labels)),

labels=labels)plt.yticks(np.arange(len(labels)),

labels=labels)foriinrange(len(labels)):forjinrange(len(labels)):text=plt.text(j,i,arr_2d[i,j],

ha='center',va='center',color='green')此外,也可以在熱力圖中添加一些輔助元素,便于用戶準(zhǔn)確地理解熱力圖的基本信息。繪制桑基圖7.47.4繪制?;鶊D掌握?;鶊D的繪制方式,能夠熟練繪制?;鶊D學(xué)習(xí)目標(biāo)7.4繪制桑基圖?;鶊D的介紹?;鶊D亦稱為桑基能量分流圖、?;芰科胶鈭D,是一種特定類型的流程圖,用于展示流量、能量、資源等在不同節(jié)點(diǎn)之間的流動(dòng)和轉(zhuǎn)化過(guò)程,常見(jiàn)于資源流動(dòng)、數(shù)據(jù)流動(dòng)、人口遷移、貿(mào)易流量等場(chǎng)景。7.4繪制桑基圖?;鶊D的基本構(gòu)成節(jié)點(diǎn):代表不同的組或?qū)ο?,使用矩形或其他形狀表示,通常帶有文本?biāo)簽以標(biāo)識(shí)其名稱或特征。邊:節(jié)點(diǎn)之間的連接部分,通常用箭頭表示。邊的寬度或粗細(xì)表示流量的大小。流量標(biāo)簽:標(biāo)注在邊上方的文本。7.4繪制?;鶊D桑基圖的基本構(gòu)成通過(guò)觀察?;鶊D中邊的走向,用戶就可以獲得流量從一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)的轉(zhuǎn)移情況。?;鶊D主要有兩個(gè)特點(diǎn),一是起始流量和結(jié)束流量可以相同,若起始節(jié)點(diǎn)所有邊寬度的總和等于結(jié)束節(jié)點(diǎn)所有邊寬度的總和,則會(huì)保持流量的平衡;二是不同的邊代表了不同的流量分流情況,它的寬度成比例地顯示此邊占有的流量。邊越寬,數(shù)值越大。7.4繪制?;鶊D繪制?;鶊D的過(guò)程Matplotlib的sankey模塊中封裝了繪制?;鶊D的功能,具體繪制過(guò)程為:首先創(chuàng)建Sankey類的對(duì)象生成初始的圖形,然后通過(guò)該對(duì)象調(diào)用add()方法為圖形添加流量,最后調(diào)用finish()方法完成圖形的繪制。7.4繪制?;鶊D繪制?;鶊D的過(guò)程1.生成初始圖形使用Sankey類的構(gòu)造方法可以生成桑基圖的初始圖形。Sankey(ax=None,

scale=1.0,

unit='',

format='%G',

gap=0.25,

radius=0.1,

shoulder=0.03,

offset=0.15,

head_angle=100,

margin=0.4,

tolerance=1e-06,

**kwargs)ax:表示圖形所在的繪圖區(qū)域,若不提供該參數(shù),則會(huì)創(chuàng)建一個(gè)新的繪圖區(qū)域。scale:表示流量的縮放比例,用于按比例調(diào)整邊的寬度。unit:表示標(biāo)簽的單位,默認(rèn)值為空字符串,即沒(méi)有單位。gap:表示不同節(jié)點(diǎn)之間的空隙大小相對(duì)于節(jié)點(diǎn)寬度的比例,默認(rèn)值為0.25。7.4繪制?;鶊D繪制桑基圖的過(guò)程1.生成初始圖形通過(guò)Sankey類的構(gòu)造方法創(chuàng)建Sankey類的對(duì)象,生成一個(gè)桑基圖的初始圖形。sankey=Sankey(gap=0.3)需要說(shuō)明的是,若用戶需要繪制較為復(fù)雜的圖形,則應(yīng)先使用無(wú)參的構(gòu)造方法創(chuàng)建Sankey類的對(duì)象,再使用add()方法添加流量時(shí)設(shè)置流量的外觀。7.4繪制桑基圖繪制?;鶊D的過(guò)程2.添加流量Sankey類中定義了add()方法,add()方法用于向?;鶊D中添加數(shù)據(jù)流量、標(biāo)簽等選項(xiàng)。add(patchlabel='',

flows=None,

orientations=None,

labels='',

trunklength=1.0,

pathlengths=0.25,

prior=None,

connect=(0,

0),

rotation=0,

**kwargs)patchlabel:表示圖表的中心標(biāo)簽。flows:表示流量的大小,取值是一個(gè)包含多個(gè)浮點(diǎn)數(shù)的列表或數(shù)組,其中輸入流量為正值,輸出流量為負(fù)值。默認(rèn)值為None,表示沒(méi)有流量。orientations:表示流量的方向列表或應(yīng)用于所有流量的單個(gè)方向,值為0時(shí)代表流量從左邊輸入向右邊輸出,值為1時(shí)代表流量從頂部輸入和輸出,值為-1時(shí)代表流量從底部輸入和輸出。7.4繪制?;鶊D繪制?;鶊D的過(guò)程2.添加流量Sankey類中定義了add()方法,add()方法用于向桑基圖中添加數(shù)據(jù)流量、標(biāo)簽等選項(xiàng)。add(patchlabel='',

flows=None,

orientations=None,

labels='',

trunklength=1.0,

pathlengths=0.25,

prior=None,

connect=(0,

0),

rotation=0,

**kwargs)labels:表示要添加到邊的標(biāo)簽,可以接收包含多個(gè)字符串的列表或單個(gè)字符串。trunklength:表示主干路徑的長(zhǎng)度,默認(rèn)值為1.0。主干指定是連接?;鶊D中流量來(lái)源和目標(biāo)的那條直線。pathlengths:表示每個(gè)邊的路徑長(zhǎng)度,默認(rèn)值為0.25。7.4繪制?;鶊D繪制桑基

溫馨提示

  • 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)論