版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《Python醫(yī)學(xué)數(shù)據(jù)分析(微課版)》第六章使用Matplotlib進行數(shù)據(jù)可視化分析本章學(xué)習(xí)目標本章學(xué)習(xí)目標:(1)了解Matplotlib的基本概念和功能;(2)掌握Matplotlib的基本繪圖命令和語法;(3)熟練掌握創(chuàng)建折線圖、散點圖、柱狀圖和餅狀圖的繪圖函數(shù),并能夠解決實際問題;(4)掌握創(chuàng)建雷達圖、氣泡圖、熱力圖、三維曲線(面)圖和詞云圖的繪圖函數(shù);(5)掌握構(gòu)建圖矩陣的語法,并應(yīng)用于數(shù)據(jù)可視化實踐。第六章使用Matplotlib進行數(shù)據(jù)可視化分析本章學(xué)習(xí)目標在本章中,我們將探討Python的另一個重要第三方庫——Matplotlib。作為一個廣受歡迎的繪圖工具,Matplotlib為Python用戶提供了強大的數(shù)據(jù)可視化功能。利用該庫,用戶能夠設(shè)計并生成各式各樣的圖表和圖形,同時,它還提供了細致的定制選項,包括坐標軸的調(diào)整、添加標簽和標題、編輯圖例以及設(shè)置數(shù)據(jù)點的樣式和顏色等。作為數(shù)據(jù)分析和科學(xué)計算領(lǐng)域的核心工具之一,Matplotlib能夠滿足從基礎(chǔ)的數(shù)據(jù)可視化到復(fù)雜圖形設(shè)計的各種需求。本章將介紹包括線圖、散點圖、柱狀圖、餅狀圖、雷達圖、氣泡圖、熱力圖、三維曲線(面)圖和詞云圖在內(nèi)的九種圖形的基本創(chuàng)建方法,及構(gòu)建圖矩陣,以期滿足不同的數(shù)據(jù)分析情況。第六章使用Matplotlib進行數(shù)據(jù)可視化分析內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.116.1Matplotlib基本概念及功能在使用Matplotlib繪圖前,應(yīng)該確保已經(jīng)安裝Matplotlib,可使用pip命令進行安裝,具體指令如下:
pipinstallmatplotlib
pyplot模塊是Matplotlib的一個子模塊,它為數(shù)據(jù)可視化提供了一種簡單而方便的接口。pyplot模塊可以創(chuàng)建各類圖表,如折線圖、散點圖、柱狀圖等,以及添加標題、標簽和網(wǎng)格等元素來增強圖表的可讀性。pyplot模塊的引用方式如下:importmatplotlib.pyplotasplt繪制圖像時若需要使用NumPy庫和Pandas庫,則應(yīng)使用pip命令進行安裝:pipinstallnumpypipinstallpandas第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.1Matplotlib基本概念及功能此外,為了使圖像能夠正確顯示并提高圖像清晰度,還應(yīng)該使用以下代碼進行配置:%matplotlibinline
在JupyterNotebook或其他交互式環(huán)境中運行時,需要在代碼開頭添加此行以正確顯示圖形:
%configInlineBackend.figure_format='retina'
設(shè)置內(nèi)嵌圖形分辨率,retina可以提高圖像清晰度。在繪圖過程中,我們需要了解和掌握Matplotlib的基本函數(shù)與繪圖函數(shù),具體內(nèi)容見表6-1、6-2。表6-1Matplotlib基本函數(shù)及功能第六章使用Matplotlib進行數(shù)據(jù)可視化分析函數(shù)功能plt.figure()創(chuàng)建畫布plt.subplot(nrows,ncols,index)劃分子圖plt.savefig()保存為圖片plt.show()顯示圖像plt.tight_layout()自動調(diào)整子圖間距6.1Matplotlib基本概念及功能第六章使用Matplotlib進行數(shù)據(jù)可視化分析函數(shù)功能plt.plot(x,y,label,legend,color,linewidth,linestyle,alpha)根據(jù)x,y數(shù)組繪制直/曲線plt.bar(left,height,width,bottom)繪制一個柱狀圖plt.barh(bottom,width,height,left)繪制一個橫向柱狀圖plt.hist(x,bins,normed)繪制直方圖plt.pie(data,explode)繪制餅狀圖plt.boxplot(data,notch,position)繪制一個箱形圖(box-plot)plt.scatter(x,y)繪制散點圖(x、y是長度相同的序列)plt.polar(theta,r)繪制極坐標圖plt.step(x,y,where)繪制步階圖plt.cohere(x,y,NFFT=256,FS)繪制x、y的相關(guān)性函數(shù)plt.specgram(x,NFFT=256,pad_to,F)繪制譜圖表6-2Matplotlib繪圖函數(shù)及功能6.1Matplotlib基本概念及功能函數(shù)功能plt.psd(x,NFFT=256,pad_to,Fs)繪制功率譜密度圖plt.contour(x,y,z,n)繪制等值線plt.vlines()繪制垂直線plt.stem(x,y,linefmt,markerfmt,basefmt)繪制曲線上每個點到水平軸線的垂線plt.plot_date()繪制數(shù)據(jù)日期plt.plotfile()繪制數(shù)據(jù)后寫入文件第六章使用Matplotlib進行數(shù)據(jù)可視化分析續(xù)表6-2內(nèi)容導(dǎo)航CONTENTS繪制散點圖繪制柱狀圖繪制折線圖6.2Matplotlib基本概念及功能6.1繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.116.2繪制折線圖折線圖是一種以線段連接各數(shù)據(jù)點的圖表類型,用以表示數(shù)據(jù)隨時間或其他連續(xù)變量的變化趨勢。通過折線圖,我們可以直觀地觀察數(shù)據(jù)的增減變化,便于比較和分析。在pyplot模塊中使用plot()函數(shù)繪制折線圖,調(diào)用的基本語法格式如下:plt.plot(x,y,label,color,width)plot()函數(shù)的參數(shù)主要如下。?x:指定x坐標的數(shù)據(jù),可以是NumPy數(shù)組。?y:指定y坐標的數(shù)據(jù),可以是NumPy數(shù)組。?label:表示為線條設(shè)置標簽。?legend:表示設(shè)置圖例。?color:表示設(shè)置線條顏色.?linewidth或lw:設(shè)置線條寬度。?linestyle或ls:設(shè)置線條標記樣式。?alpha:表示設(shè)置點的透明度,取值范圍為0~1。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.2繪制折線圖例6-1:使用Matplotlib庫繪制折線圖。第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotasplt#導(dǎo)入matplotlib庫中的pyplot模塊,并將其重命名為pltx=[1,3,5,7,9,11]#創(chuàng)建數(shù)據(jù)y=[20,4,25,10,15,32]plt.plot(x,y)#使用plot()函數(shù)繪制折線圖plt.show()#使用show()函數(shù)顯示圖像代碼執(zhí)行結(jié)果如圖6-1所示。圖6-1折線圖示例6.2繪制折線圖例6-2:請繪制0到10之間的正弦函數(shù)和余弦函數(shù)圖像,要求正弦函數(shù)線條顏色為藍色,余弦函數(shù)線條顏色為紅色。代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotasplt
importnumpyasnp
#導(dǎo)入NumPy庫,并將其重命名為npx=np.linspace(0,10,1000)
#linspace返回1000個0-10均勻分布的樣本y_sin=np.sin(x)
#計算正弦值y_cos=np.cos(x)
#計算余弦值plt.plot(x,y_sin,color='b',label='sin(x)')
#使用plot()函數(shù)繪制正弦函數(shù)圖像plt.plot(x,y_cos,color='r',label='cos(x)')
#使用plot()函數(shù)繪制余弦函數(shù)圖像plt.legend()
#添加圖例plt.show()
6.2繪制折線圖思考:請問還可以設(shè)置線條的哪些顏色和樣式呢?詳見表6-3。表6-3參數(shù)設(shè)置第六章使用Matplotlib進行數(shù)據(jù)可視化分析符號描述符號描述符號描述b藍色‘-’實線樣式‘o’圓圈標記g綠色‘--’虛線樣式‘s’方形標記r紅色‘-.’點劃線樣式‘p’五邊形標記c青色‘:’虛線樣式‘8’八角形標記m品紅色‘.’點標記‘*’星型y黃色‘,’像素標記‘h’hexagon1標記k黑色‘?’triangle_down標記‘H’hexagon2標記w白色‘?’triangle_up標記‘+’加號標記‘1’tri_down標記‘?’triangle_left標記‘x’x標記‘2’tri_up標記‘?’triangle_right標記‘X’x(填充)標記‘3’tri_left標記‘|’垂直線標記‘D’鉆石標記‘4’tri_right標記‘_’水平線標記‘d’薄鉆石標記6.2繪制折線圖例6-3:請根據(jù)表6-4繪制折線圖,其中,醫(yī)院總數(shù)線條顏色為黃色,綜合醫(yī)院數(shù)為藍色,中醫(yī)醫(yī)院為紅色,專科醫(yī)院用綠色;數(shù)據(jù)節(jié)點使用方形并添加圖例。表6-42010年—2021年醫(yī)院數(shù)第六章使用Matplotlib進行數(shù)據(jù)可視化分析年份醫(yī)院總數(shù)綜合醫(yī)院中醫(yī)醫(yī)院??漆t(yī)院2010209181368127783956201121979143282831428320122317015021288946652013247091588730155127201425860165243115547820152758717430326760232016291401802034626642201731056189213695722020183300919693397779002019343541996342218531202035394201334426902120213657020307463096996.2繪制折線圖代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltdata=[(2010,20918,13681,2778,3956),#錄入數(shù)據(jù)
(2011,21979,14328,2831,4283),……
(2021,36570,20307,4630,9699)]years=[x[0]forxindata]#獲取第一列數(shù)據(jù)作為年份Total_hospitals=[x[1]forxindata]#獲取第二列數(shù)據(jù)作為醫(yī)院總數(shù)general_hospitals=[x[2]forxindata]#獲取第三列數(shù)據(jù)作為綜合醫(yī)院數(shù)traditional_chinese_medicine_hospitals=[x[3]forxindata]#獲取第四列數(shù)據(jù)作為中醫(yī)院數(shù)specialty_hospitals=[x[4]forxindata]#獲取第五列數(shù)據(jù)作為??漆t(yī)院數(shù)plt.figure()#創(chuàng)建畫布6.2繪制折線圖代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析plt.plot(years,Total_hospitals,label='醫(yī)院總數(shù)',marker='s',color='y')#繪制醫(yī)院總數(shù)圖像plt.plot(years,general_hospitals,label='綜合醫(yī)院',marker='s',color='b')#繪制綜合醫(yī)院圖像plt.plot(years,traditional_chinese_medicine_hospitals,label='中醫(yī)醫(yī)院',marker='s',color='r')#繪制中醫(yī)醫(yī)院圖像plt.plot(years,specialty_hospitals,label='專科醫(yī)院',marker='s',color='g')#繪制??漆t(yī)院圖像plt.xticks(years)#設(shè)置x軸刻度為年份plt.xlabel('年份')#設(shè)置x軸標簽plt.ylabel('醫(yī)院數(shù)量/(個)')#設(shè)置y軸標簽plt.title('2010-2021年各類醫(yī)院數(shù)量變化')#設(shè)置圖像標題plt.legend()#添加圖例plt.show()6.2繪制折線圖代碼執(zhí)行結(jié)果如圖6-3所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-32010-2021年各類醫(yī)院數(shù)量變化內(nèi)容導(dǎo)航CONTENTS繪制散點圖6.3繪制折線圖Matplotlib基本概念及功能繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.16.3繪制散點圖散點圖,又稱點圖,是一種將數(shù)據(jù)點在二維坐標系中以點的形式表示出來的圖表類型。每個點的位置由其兩個變量的數(shù)值決定,通常橫坐標和縱坐標分別代表不同的數(shù)據(jù)維度。散點圖適用于展示兩個變量之間的關(guān)系,可以用來識別數(shù)據(jù)點的模式、趨勢和異常值,并能夠幫助分析變量之間的相關(guān)性或因果關(guān)系。通過觀察點的分布形態(tài),可以發(fā)現(xiàn)變量之間的線性或非線性關(guān)系,以及可能的聚類或散布現(xiàn)象。在pyplot子庫中使用scatter()函數(shù)繪制散點圖,調(diào)用的基本格式如下:plt.scatter(x,y,s=None,c=None,marker=None,linewidth=None,alpha=1)其中,各部分表示含義如下:?x,y:是必須的參數(shù),用來指定散點的x和y坐標;?s:指定每個散點的大??;?c:指定每個散點的顏色;?marker:指定每個散點的形狀,如點、星星、三角形等;?linewidth或lw:指定每個散點的寬度。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.3繪制散點圖例6-4:使用Matplotlib庫繪制散點圖。代碼執(zhí)行結(jié)果如圖6-4所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltx=[1,2,3,4,5,6,7,8,9,10]#創(chuàng)建數(shù)據(jù)y=[2,5,7,6,7,8,11,8,10,11]plt.scatter(x,y,color='r',s=100)#使用scatter()函數(shù)繪制散點圖plt.show()圖6-4散點圖示例6.3繪制散點圖例6-5:請繪制兩個包含1000個隨機數(shù)的數(shù)組所構(gòu)成的散點圖。第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltimportnumpyasnp#導(dǎo)入NumPy庫,并將其重命名為npdt1=np.random.randn(1000)#創(chuàng)建包含1000個隨機數(shù)的數(shù)組dt2=np.random.randn(1000)plt.scatter(x=dt1,y=dt2,s=10,marker='*',alpha=0.4)#使用scatter()函數(shù)繪制散點圖,s表示點的大小,marker表示點的樣式,alpha表示透明度plt.show()代碼執(zhí)行結(jié)果如圖6-5所示。圖6-51000個隨機數(shù)生成的散點圖內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖6.16.2繪制餅狀圖繪制雷達圖6.36.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.1繪制柱狀圖6.46.4繪制柱狀圖柱狀圖,也稱為條形圖,是一種常用的數(shù)據(jù)可視化工具,以長方形的長度來表示各種數(shù)據(jù)量的大小,其中長方形的寬度通常固定,高度則根據(jù)數(shù)據(jù)的大小而變化;而與柱狀圖在視覺上相似,直方圖則采用了連續(xù)的矩形條來描繪數(shù)據(jù)的頻數(shù)分布,柱狀圖適用于對比不同類別或組之間的數(shù)據(jù),可以清晰地展示各個類別的數(shù)量、比例或增長情況。通過觀察柱子的高度,可以直觀地比較數(shù)據(jù)的大小,發(fā)現(xiàn)數(shù)據(jù)之間的差異和趨勢。柱狀圖適合于展示分類數(shù)據(jù),是最直觀的數(shù)據(jù)展示方式之一。直方圖是一種統(tǒng)計圖表,通過一系列連續(xù)的矩形條來展示數(shù)據(jù)的分布情況,其中每個矩形的高度代表數(shù)據(jù)在相應(yīng)區(qū)間內(nèi)的頻數(shù)或頻率,橫軸表示數(shù)據(jù)的數(shù)值范圍,而縱軸表示頻數(shù)或頻率,它主要用于揭示數(shù)據(jù)的分布形態(tài)、中心趨勢和離散程度,是數(shù)據(jù)分析中觀察連續(xù)變量分布特征的重要工具。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.4繪制柱狀圖在pyplot子庫中使用bar()函數(shù)繪制柱狀圖,調(diào)用的基本格式如下:plt.bar(x,height,width=0.8,bottom=None,align='center')其中,各部分表示含義如下:?x:表示x坐標軸;?height:表示y坐標軸;?width:表示柱形寬度,默認值為0.8;?bottom:表示柱形底邊的y坐標,默認值為0;?align:表示將柱形對齊到x坐標,'center'是以x位置為中心,'edge'是將柱形的左邊緣與x位置對齊。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.4繪制柱狀圖在pyplot模塊中使用hist()函數(shù)繪制直方圖,調(diào)用的基本語法格式如下:plt.hist(x,bins=None,density=False,bottom=None,histtype='bar',align='mid',orientation='vertical',rwidth=None,color=None,label=None,alpha=1)hist()函數(shù)的參數(shù)主要如下。?x:表示繪制直方圖的數(shù)據(jù)。?bins:指定直方圖的分組數(shù)量。?density:如果為True,則返回每個bin的頻率而非頻數(shù);如果為False,則返回頻數(shù)。?bottom:表示在直方圖的頂部添加一個底部值。?histtype:指定直方圖的類型,可以是'bar'、'barstacked'、'step'、'stepfilled'。?align:設(shè)置bin的邊界,'left'(默認)表示左邊界,'mid'表示中間。?orientation:設(shè)置直方圖的方向,可為垂直方向('vertical',默認)或水平方向('horizontal')。?width:設(shè)置直方圖的寬度,以非百分比的形式出現(xiàn),當取值為0.9時,表示條柱寬度是其所在數(shù)據(jù)區(qū)間寬度的90%(默認值為1.0,即條柱占滿整個數(shù)據(jù)區(qū)間)。?color:設(shè)置直方圖的顏色。?label:設(shè)置直方圖的標簽。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.4繪制柱狀圖例6-6:表6-5所示為2021年醫(yī)院數(shù),請繪制柱狀圖。表6-52021年醫(yī)院數(shù)第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotasplthospital_levels=['一級醫(yī)院','二級醫(yī)院','三級醫(yī)院']#創(chuàng)建數(shù)據(jù)hospital_counts=[12649,10848,3275]plt.bar(hospital_levels,hospital_counts,width=0.5)#使用bar()函數(shù)繪制柱狀圖,寬度為0.5plt.title('2021年醫(yī)院數(shù)')#設(shè)置圖像標題plt.xlabel('醫(yī)院分類')#設(shè)置x軸標簽plt.ylabel('數(shù)量(個)')#設(shè)置y軸標簽plt.show()醫(yī)院分類醫(yī)院數(shù)/個一級醫(yī)院12649二級醫(yī)院10848三級醫(yī)院32756.4繪制柱狀圖代碼執(zhí)行結(jié)果如圖6-6所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-6柱狀圖示例6.4繪制柱狀圖例6-7:請隨機生成10000個數(shù),并繪制直方圖。第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltimportnumpyasnpdata=np.random.randn(10000)#創(chuàng)建數(shù)據(jù),生成一個包含10000個隨機數(shù)的數(shù)組plt.hist(data,bins=10,color='b',alpha=0.7)#使用hist()函數(shù)繪制直方圖,bins參數(shù)用于指定直方圖的分組數(shù)量plt.show()代碼執(zhí)行結(jié)果如圖6-7所示。圖6-7直方圖示例內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制雷達圖6.36.46.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.1繪制餅狀圖6.56.5繪制餅狀圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析餅狀圖,又稱為圓形圖或餅圖,是一種以圓形區(qū)域來展示數(shù)據(jù)比例關(guān)系的圖表類型。整個圓被劃分為若干個扇形區(qū)域,每個扇形的大小對應(yīng)著數(shù)據(jù)中一個類別的比例或百分比。餅狀圖主要用于展示各部分數(shù)據(jù)在整體中的占比,便于觀察各部分之間的相對大小和比例關(guān)系。通過餅狀圖,可以直觀地了解各個分類在總數(shù)中所占的比例,以及各部分之間的對比情況。在pyplot子庫中使用pie()函數(shù)繪制餅狀圖,調(diào)用的基本格式如下:plt.pie(x,explode=None,labels=None,colors=None,autopct=None,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True)6.5繪制餅狀圖其中,常用參數(shù)表示含義如下:?x:表示繪制餅圖的數(shù)據(jù);?explode:表示每個扇形偏移量;?labels:每個扇形對應(yīng)的標簽;?colors:制定扇形顏色;?autopct:用于標記扇形,標簽將放在扇形內(nèi);?shadow:為True時表示為扇形添加陰影;?labeldistance:扇形標簽距餅圖中心的距離;?startangle:起始繪制角度,默認是從x軸逆時針方向開始;?radius:餅狀圖的半徑;?counterclock:是否使用逆時針方向繪制。第六章使用Matplotlib進行數(shù)據(jù)可視化分析6.5繪制餅狀圖例6-8:已知市面上有四種藥品出售,出售A藥所獲盈利占總收入的25%,出售B藥所獲盈利占總收入的35%,出售C藥所獲盈利占總收入的15%,出售D藥所獲盈利占總收入的25%,請根據(jù)已知信息繪制餅狀圖。代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltex=(0,0.1,0,0)#設(shè)置每個扇形的偏移量plt.pie([25,35,15,25],labels=['A藥','B藥','C藥','D藥'],autopct='%1.1f%%',explode=ex)#使用pie()函數(shù)繪制餅狀圖,[25,35,15,25]表示每個扇形面積,labels設(shè)置標簽,autopct為設(shè)置每個扇區(qū)顯示百分比格式的參數(shù),explode表示每個扇形的偏移量plt.axis('equal')#使用axis()函數(shù)設(shè)置坐標軸比例,當設(shè)置為'equal'時,表示x軸和y軸的刻度值之間的比例關(guān)系為1:1,避免圖形變形。plt.show()6.5繪制餅狀圖代碼執(zhí)行結(jié)果如圖6-8所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-8餅狀圖示例內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖6.36.46.5繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.1繪制雷達圖6.66.6繪制雷達圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析雷達圖,也稱為多變量圖或蜘蛛圖,是一種以多個坐標軸來展示多個定量變量的圖表類型。每個坐標軸代表一個變量,坐標軸上的數(shù)據(jù)點表示該變量的數(shù)值。雷達圖適用于展示多個變量之間的相對大小和關(guān)系,可以通過比較各個坐標軸上的數(shù)據(jù)點來分析數(shù)據(jù)集中的多個維度。雷達圖特別適合用于展示具有多個定量變量的數(shù)據(jù),可以幫助用戶理解多個變量如何相互關(guān)聯(lián),以及每個變量在整體中的位置和作用。雷達圖的主要元素如下。?坐標軸:每個變量對應(yīng)一條射線或軸線,射線從中心點向外延伸構(gòu)成坐標軸。射線的長度或與極徑所形成夾角的角度表示該變量的大小或比例。?數(shù)據(jù)點:在每條射線上,根據(jù)變量的值確定相應(yīng)的數(shù)據(jù)點的位置。?雷達鏈:連接各個數(shù)據(jù)點而形成的多邊形或區(qū)域,用于表示多個變量之間的關(guān)系。?區(qū)域范圍:雷達鏈所連接的區(qū)域,面積大小代表各個數(shù)據(jù)綜合的結(jié)果。在pyplot模塊中繪制雷達圖可使用polar()函數(shù)繪制極坐標實現(xiàn),調(diào)用的基本語法格式如下:polar(theta,r)?theta:表示每個數(shù)據(jù)點所在射線與極徑所形成夾角的角度。?r:表示每個數(shù)據(jù)點到中心點的距離。6.6繪制雷達圖例6-9:某人根據(jù)中華中醫(yī)藥學(xué)會標準制定的《中醫(yī)體質(zhì)分類與判定自測表》進行自我測評,各體質(zhì)類型轉(zhuǎn)化分如下:平和體質(zhì)75分,氣虛體質(zhì)35分、陽虛體質(zhì)10分、陰虛體質(zhì)20分、痰濕體質(zhì)50分、濕熱體質(zhì)35分、血瘀體質(zhì)40分、氣郁體質(zhì)30分、特稟體質(zhì)45分,請繪制雷達圖。代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltimportnumpyasnpnum=9#變量num表示數(shù)據(jù)點的數(shù)量angles=np.linspace(0,2*np.pi,num,endpoint=False)#np.linspace()函數(shù)表示產(chǎn)生與num個數(shù)一樣的角度,范圍為0到2π,np.pi表示圓周率π,endpoint表示最后一個角度值不包含在生成的數(shù)組中angles=np.concatenate((angles,[angles[0]]))#使用concatenate()函數(shù)將angles數(shù)組的第一個元素添加到數(shù)組末尾,使得圖形閉合6.6繪制雷達圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析data=[75,35,10,20,50,35,40,30,45]#創(chuàng)建數(shù)據(jù)data=np.concatenate((data,[data[0]]))#使用concatenate()函數(shù)將data列表的第一個元素添加到列表末尾,使得圖形閉合labels=np.array(['平和質(zhì)','氣虛質(zhì)','陽虛質(zhì)','陰虛質(zhì)','痰濕質(zhì)','濕熱質(zhì)','血瘀質(zhì)','氣郁質(zhì)','特稟質(zhì)'])#設(shè)置類別名稱labels=np.concatenate((labels,[labels[0]]))#使用concatenate()函數(shù)將labels數(shù)組的第一個元素添加到數(shù)組末尾,使得圖形閉合plt.polar(angles,data)#使用polar()函數(shù)繪制極坐標圖,傳入角度值和數(shù)據(jù)值plt.thetagrids(angles*180/np.pi,labels=labels)#使用thetagrids()函數(shù)設(shè)置極坐標圖的角度刻度和標簽plt.fill(angles,data,facecolor='g',alpha=0.1)#使用plt.fill函數(shù)填充極坐標圖的顏色和透明度plt.plot(angles,data,'go-')#'g'表示點的顏色為綠色,'o'表示點的形狀為圓形,'-'表示線型為實線plt.show()6.6繪制雷達圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析代碼執(zhí)行結(jié)果如圖6-9所示。圖6-9中醫(yī)體質(zhì)分類與判定自測表各體質(zhì)類型轉(zhuǎn)化分內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.1繪制氣泡圖6.76.7繪制氣泡圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析氣泡圖是一種以圓形氣泡的大小來表示數(shù)據(jù)點的三個變量的圖表類型。在二維坐標系中,每個氣泡的位置由兩個變量的值決定,而氣泡的大小則表示第三個變量的值。氣泡圖適用于展示三個變量之間的關(guān)系,可以用來比較和分析數(shù)據(jù)點在不同維度上的分布和相對大小。通過觀察氣泡的位置和大小,可以發(fā)現(xiàn)變量之間的模式、趨勢和關(guān)聯(lián)性。氣泡圖特別適合于展示多維數(shù)據(jù),幫助人們理解三個變量如何相互影響和相互作用。在pyplot子庫中同樣使用scatter()函數(shù)繪制氣泡圖,但是它們在使用時參數(shù)s和c的設(shè)置有所不同。s:在散點圖中,用于指定散點的大小,通常是固定的,表示所有點的大小相同。而在氣泡圖中,s參數(shù)會根據(jù)數(shù)據(jù)集中的某個值來變化,通常用來表示第三個維度的大小,比如數(shù)據(jù)集中的數(shù)量或值的大??;c:在散點圖中,用于指定散點的顏色,顏色通常是固定的,或者根據(jù)某種分類來設(shè)定不同的顏色。在氣泡圖中,c參數(shù)也可以用來表示第四個維度,通過顏色映射來展示數(shù)據(jù)集中的另一個數(shù)值。6.7繪制氣泡圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-10:使用Matplotlib庫繪制氣泡圖示例。代碼如下:importmatplotlib.pyplotaspltimportnumpyasnpx=[1,2,3,4,5,6,7,8,9,10]#創(chuàng)建數(shù)據(jù)y=[109,55,39,56,73,60,19,28,130,47]colors=np.random.rand(10)#使用random.rand()函數(shù)生成10個范圍為[0,1)的隨機浮點數(shù)數(shù)組sizes=np.random.randint(10,500,10)#使用random.randint()函數(shù)生成10個范圍為[10,500)的隨機整數(shù)數(shù)組plt.scatter(x,y,s=sizes,c=colors,alpha=0.5)#使用scatter()函數(shù)繪制氣泡圖,s為氣泡大小,c為氣泡顏色,alpha為氣泡透明度plt.show()6.7繪制氣泡圖代碼執(zhí)行結(jié)果如圖6-10所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-10氣泡圖示例內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制三維曲線(面)繪制詞云圖構(gòu)建圖矩陣6.96.106.11Matplotlib基本概念及功能6.1繪制熱力圖6.86.8繪制熱力圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析熱力圖是一種以顏色漸變來表示數(shù)據(jù)密度或數(shù)值大小的圖表類型。它通過不同的顏色深淺來展示數(shù)據(jù)的分布和變化,通常用于表示地理數(shù)據(jù)、人口統(tǒng)計、經(jīng)濟指標或任何需要顯示集中趨勢和分布范圍的數(shù)據(jù)。在熱力圖中,顏色通常代表數(shù)值的大小,暖色調(diào)(如紅色、橙色)表示高數(shù)值,冷色調(diào)(如藍色、綠色)表示低數(shù)值。這種圖表形式使人們能夠直觀地看出數(shù)據(jù)的聚集區(qū)域和分布模式,有助于發(fā)現(xiàn)數(shù)據(jù)中的熱點和冷點,從而進行更深入的數(shù)據(jù)分析和決策。熱力圖適用于展示具有空間或地理屬性的數(shù)據(jù),幫助人們理解數(shù)據(jù)在空間上的分布和變化。6.8繪制熱力圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-11:表6-6為2000年—2021年部分地區(qū)總?cè)丝冢ㄈf人),請繪制熱力圖描述該統(tǒng)計資料。表6-62000年—2021年部分地區(qū)總?cè)丝冢ㄈf人)地區(qū)
年份2000年2005年2010年2015年2017年2018年2019年2020年2021年北京135715381961218821942192219021892189河北667468517194734574097426744774647448遼寧418442214375433843124291427742554229上海164117782303245824662475248124882489浙江459648985447598561706273637564686540湖南656263266570661566336635664066456622廣東7707919410441116781214112348124891262412684海南78982886994597298299510121020四川860282128045819682898321835183718372云南424144504602466346934703471447224690西藏258277301330349354361366366新疆1849201021852385248025202559259025896.8繪制熱力圖代碼如下:第六章使用Matplotlib進行數(shù)據(jù)可視化分析importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd#導(dǎo)入Pandas庫,并將其重命名為pdimportseabornassns#導(dǎo)入seaborn庫,并將其重命名為sns,seaborn也是Python中的一個可視化庫,可以設(shè)置圖像的主題、顏色等內(nèi)容。year=['2000年','2005年','2010年','2015年','2017年','2018年','2019年','2020年','2021年']#創(chuàng)建x軸region=['北京','河北','遼寧','上海','浙江','湖南','廣東','海南','四川','云南','西藏','新疆']#創(chuàng)建y軸data=np.array([[1357,1538,1961,2188,2194,2192,2190,2189,2189],#存儲數(shù)據(jù)
[6674,6851,7194,7345,7409,7426,7447,7464,7448],……[1849,2010,2185,2385,2480,2520,2559,2590,2589]])fig,ax=plt.subplots(figsize=(8,7))#創(chuàng)建子圖對象,并設(shè)置圖像大小6.8繪制熱力圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析ax.set_xticks(np.arange(len(year)))#set_xticks為設(shè)置x軸刻度,np.arange(len(year))是使用NumPy庫生成一個從0到len(year)-1的整數(shù)序列,作為x軸刻度的值ax.set_yticks(np.arange(len(region)))#設(shè)置y軸刻度heat_map=sns.heatmap(data,annot=True,fmt='.0f',cmap='Blues',xticklabels=year,yticklabels=region)#使用sns庫中的heatmap()函數(shù)繪制熱力圖,annot=True表示在每個單元格中顯示數(shù)值,cmap設(shè)置顏色映射plt.title('2000年—2021年部分地區(qū)總?cè)丝冢ㄈf人)',fontsize=15)#設(shè)置圖像標題,fontsize為設(shè)置字體大小plt.imshow(data)#顯示二維RGB格式圖像plt.tight_layout()#自動調(diào)整子圖參數(shù),使之填充整個圖像區(qū)域plt.show()6.8繪制熱力圖代碼執(zhí)行結(jié)果如圖6-11所示。第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-112015年—2018年醫(yī)院各科室住院患者統(tǒng)計表內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制詞云圖構(gòu)建圖矩陣6.106.11Matplotlib基本概念及功能6.1繪制三維曲線(面)6.96.9繪制三維曲線(面)第六章使用Matplotlib進行數(shù)據(jù)可視化分析三維曲線圖,也稱為三維曲面圖,是一種以三個坐標軸來展示數(shù)據(jù)關(guān)系的圖表類型。在三維空間中,每個點的坐標位置由三個變量的值決定,這些點可以連成曲線或構(gòu)成曲面。三維曲線(面)圖適用于展示三個變量之間的復(fù)雜關(guān)系,可以用來分析數(shù)據(jù)在三維空間中的分布、趨勢和模式。通過觀察曲線或曲面的形狀和走向,人們可以揭示變量之間的相互作用和影響。然而,三維曲線(面)圖在處理大量數(shù)據(jù)時可能會顯得比較復(fù)雜,且對于用戶的空間想象力要求較高。因此,在使用三維曲線(面)圖時應(yīng)謹慎考慮數(shù)據(jù)的復(fù)雜性和用戶的空間想象。6.9繪制三維曲線(面)第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-12:使用Matplotlib庫繪制三維曲線(面)圖示例一。importmatplotlib.pyplotaspltimportnumpyasnpfrommpl_toolkits.mplot3dimportAxes3D#從Matplotlib庫的mpl_toolkits模塊中導(dǎo)入Axes3D類來創(chuàng)建三維圖形x=np.arange(-10,10,0.1)#生成一維數(shù)組,表示x軸的坐標值,np.arange(-10,10,0.1)表示生成從-10開始,到10結(jié)束,步長為0.1的等差數(shù)列y=np.arange(-10,10,0.1)xx,yy=np.meshgrid(x,y)#meshgrid()函數(shù)用于將輸入的一維坐標數(shù)組轉(zhuǎn)換成二維的矩陣坐標zz=(xx**2+yy**2)#zz為xx和yy的平方和fig=plt.figure()#創(chuàng)建空白窗口ax=Axes3D(fig)#創(chuàng)建三維坐標軸ax.plot_surface(xx,yy,zz,cmap='rainbow')#ax.plot_surface()函數(shù)用于繪制三維曲線(面)圖,xx、yy、zz為三維坐標,cmap參數(shù)可設(shè)置顏色映射為彩虹漸變色plt.show()注:cmap參數(shù)可用于設(shè)置多種顏色,如'viridis'(藍綠漸變色)、'plasma'(黃紫漸變色)、'inferno'(黃黑漸變色)等。6.9繪制三維曲線(面)第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-12三維曲線(面)圖示例一代碼執(zhí)行結(jié)果如圖6-12所示。6.9繪制三維曲線(面)第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-12:使用Matplotlib庫繪制三維曲線(面)圖示例二。importmatplotlib.pyplotaspltimportnumpyasnpfrommpl_toolkits.mplot3dimportAxes3D#從Matplotlib庫的mpl_toolkits模塊中導(dǎo)入Axes3D類來創(chuàng)建三維圖形frommatplotlibimportcm#導(dǎo)入Matplotlib庫中的cm模塊x=np.arange(-6,6,0.5)#生成一維數(shù)組,表示x軸的坐標值,np.arange(-6,6,0.5)表示生成從-6開始,到6結(jié)束,步長為0.5的等差數(shù)列y=np.arange(-6,6,0.5)x,y=np.meshgrid(x,y)#meshgrid()函數(shù)用于將輸入的一維坐標數(shù)組轉(zhuǎn)換成二維的矩陣坐標r=np.sqrt(x**2+y**2)#np.sqrt()為平方根函數(shù),表示計算平面上點(x,y)到原點的距離rz=np.sin(r)#基于徑向距離r計算z軸坐標值,生成正弦波曲面高度場fig=plt.figure()#創(chuàng)建空白窗口ax=Axes3D(fig)#創(chuàng)建三維坐標軸ax.plot_surface(x,y,z,cmap=cm.hot)#ax.plot_surface()函數(shù)用于繪制三維曲線(面)圖,cmap=cm.hot為設(shè)置熱力圖顏色映射plt.show()6.9繪制三維曲線(面)第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-13三維曲線(面)圖示例二代碼執(zhí)行結(jié)果如圖6-13所示。內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)構(gòu)建圖矩陣6.96.11Matplotlib基本概念及功能6.1繪制詞云圖6.106.10繪制詞云圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析詞云圖(wordCloudgraph)是一種展示文本數(shù)據(jù)中單詞或詞語出現(xiàn)頻率的圖表類型。詞云圖將單詞或詞語的大小與其出現(xiàn)頻率成比例地展示,使得用戶可以迅速識別出文本中的主要話題和關(guān)鍵詞。在詞云圖中,出現(xiàn)頻率較高的單詞或詞語會以較大的字號顯示,而出現(xiàn)頻率較低的單詞或詞語則以較小的字號顯示。這種圖表不僅能夠突出重要的內(nèi)容,還能夠提供文本的整體概覽。詞云圖常用于社交媒體分析、搜索引擎優(yōu)化、文本挖掘和文本可視化等領(lǐng)域,幫助人們快速發(fā)現(xiàn)文本中的高頻單詞或詞語。然而,詞云圖可能無法展示出單詞或詞語之間的關(guān)聯(lián)性,因此通常與其他文本分析工具結(jié)合使用,進行更全面的文本數(shù)據(jù)分析。6.10繪制詞云圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-14:請根據(jù)給定文件中藥方劑.txt繪制詞云圖。#pipinstallwordcloud#安裝wordcloud庫繪制詞云圖#pipinstalljieba#安裝jieba庫進行中文分詞fromwordcloudimportWordCloud#從wordcloud庫中導(dǎo)入WordCloud類importmatplotlib.pyplotaspltimportjieba#導(dǎo)入jieba庫withopen('中藥處方劑.txt','r',encoding='UTF-8')asf:#使用“withopen()語句”打開中藥處方.txt的文件,并以只讀模式(’r’)和指定的編碼格式(UTF-8)進行讀取
text=f.read()#讀取文件內(nèi)容并將其存儲在變量text中words=jieba.cut(text,cut_all=False)#使用jieba精確模式進行分詞forchin',?!浚。唬?、\n':#遍歷文件中的特殊字符并刪除,存在列表words中
ifchinwords:words=[wordforwordinwordsifword!=ch]6.10繪制詞云圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析counts={}forwordinwords:iflen(word)>=2andwordnotin[‘和’,‘的’,‘是’]:#遍歷文件中符合長度≥2,且不是‘和’‘的’‘是’條件的字符以鍵值對的方式存入字典counts中
counts[word]=counts.get(word,0)+1print(counts)#輸出分詞結(jié)果wc=WordCloud(font_path='simhei.ttf',background_color='white').generate_from_frequencies(counts)#根據(jù)詞頻結(jié)果繪制詞云圖,規(guī)定背景顏色為白色,字體為黑體plt.imshow(wc)#將數(shù)組數(shù)據(jù)以圖像的形式顯示plt.axis('off')#關(guān)閉圖形坐標軸plt.show()注:在進行中文分詞的時候需要將字體包和分詞文件放在與Python文件同一路徑下。6.10繪制詞云圖第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-14中藥處方詞云圖代碼執(zhí)行結(jié)果如圖6-14所示。內(nèi)容導(dǎo)航CONTENTS繪制折線圖Matplotlib基本概念及功能繪制散點圖繪制柱狀圖6.16.2繪制餅狀圖繪制雷達圖6.36.46.56.6繪制氣泡圖6.7繪制熱力圖6.8繪制三維曲線(面)繪制詞云圖6.96.10Matplotlib基本概念及功能6.1繪制圖矩陣6.116.11構(gòu)建圖矩陣第六章使用Matplotlib進行數(shù)據(jù)可視化分析在使用Matplotlib繪圖時,經(jīng)常會遇到數(shù)據(jù)需要由多個圖像來進行可視化展示的情況,此時需要在同一個窗口中展示多個子圖,可以使用figure()函數(shù)創(chuàng)建畫布,subplot()函數(shù)能夠?qū)斍皥D形窗口劃分為多個子圖,并選擇其中一個作為當前繪圖的軸。函數(shù)調(diào)用的基本格式為:plt.figure(num=None,figsize=None,dpi=None,facecolor=None)plt.subplot(nrows,ncols,index)figure()函數(shù)各部分表示含義如下:?num表示畫布的編號,如果在此之前已經(jīng)存在此編號的畫布,則使用此編號畫布作為當前畫布,如果不存在此編號畫布,則產(chǎn)生一個新畫布,并把此新畫布作為當前畫布;?figsize定義畫布的長寬,默認情況下長寬為(6.4,4.8);?dpi定義畫布的分辨率,默認情況下分辨率為dpi=100;?facecolor定義畫布的背景色。subplot()函數(shù)各部分表示含義如下:?nrows:表示子區(qū)域的行數(shù);?ncols:表示子區(qū)域的列數(shù);?index:表示子區(qū)域的編號,由左至右,由上至下從1開始編號。6.11構(gòu)建圖矩陣第六章使用Matplotlib進行數(shù)據(jù)可視化分析例6-15:使用Matplotlib庫繪制圖矩陣示例。代碼如下:importmatplotlib.pyplotaspltimportnumpyasnpplt.figure(figsize=(6,3),facecolor='yellow')#產(chǎn)生背景為黃色畫布,尺寸為(6,3)plt.subplot(2,3,1)#構(gòu)建第一個子圖plt.plot([1,2,3],[2,4,6])#繪制直線圖plt.subplot(2,3,2)#構(gòu)建第二個子圖plt.plot([1,2,3],[2,8,6])#繪制折線圖plt.subplot(2,3,3)#構(gòu)建第三個子圖X=[0,1,2,3,4,5]#創(chuàng)建數(shù)據(jù)Y=[22,82,455,664,454,134]plt.bar(X,Y,0.7,color='red')#繪制條形圖,寬度為0.7,顏色為紅色6.11構(gòu)建圖矩陣第六章使用Matplotlib進行數(shù)據(jù)可視化分析plt.subplot(2,3,4)#構(gòu)建第四個子圖x=[1,2,3,4,5,6,7,8,9,10]#創(chuàng)建數(shù)據(jù)y=[1,3,2,3,5,7,6,9,8,10]colors=np.random.rand(10)#生成一個包含10個隨機數(shù)的數(shù)組sizes=np.random.randint(10,80,10)#生成一個包含10個隨機整數(shù)的數(shù)組,范圍為10-80之間plt.scatter(x,y,s=sizes,c=colors,alpha=0.5)#繪制氣泡圖,散點大小為sizes生成的數(shù)組,顏色為colors生成的數(shù)組,透明度為0.5plt.subplot(2,3,5)#構(gòu)建第五個子圖ex=(0.1,0,0)#設(shè)置每個扇形的偏移量plt.pie([30,30,40],labels=['A藥','B藥','C藥'],autopct='%1.1f%%',explode=ex)#使用pie()函數(shù)繪制餅狀圖,[30,40,40]表示每個扇形面積,labels設(shè)置標簽,autopct為設(shè)置每個扇區(qū)顯示百分比格式的參數(shù),explode表示每個扇形的偏移量plt.axis('equal')#使用axis函數(shù)設(shè)置坐標軸比例,當設(shè)置為'equal'時,表示x軸和y軸的刻度值之間的比例關(guān)系為1:1,避免圖形變形。6.11構(gòu)建圖矩陣第六章使用Matplotlib進行數(shù)據(jù)可視化分析plt.subplot(2,3,6)#構(gòu)建第六個子圖x=np.linspace(0,10,1000)#linspace()函數(shù)返回1000個0-10均勻分布的樣本y=np.sin(x)#計算正弦值plt.plot(x,y)#繪制正弦函數(shù)圖像plt.tight_layout()#自動調(diào)整子圖間距plt.show()6.11構(gòu)建圖矩陣第六章使用Matplotlib進行數(shù)據(jù)可視化分析圖6-15圖矩陣示例代碼執(zhí)行結(jié)果如圖6-15所示。實訓(xùn)5數(shù)據(jù)可視化分析案例第六章使用Matplotlib進行數(shù)據(jù)可視化分析案例:表6-7為某課題組使用《SF-36生活質(zhì)量調(diào)查表》對20名受試者進行評分,并收集了其他部分數(shù)據(jù),編輯成Excel文件"SF-36生活質(zhì)量調(diào)查表評分及其他部分數(shù)據(jù).xlsx"。請根據(jù)以下數(shù)據(jù)繪制餅狀圖、散點圖和雷達圖,其中,餅狀圖和散點圖放置于同一張圖中。表6-7《SF-36生活質(zhì)量調(diào)查表》評分及其他部分數(shù)據(jù)序號體質(zhì)指數(shù)BMI分類身高(cm)生理功能生理職能軀體疼痛總體健康活力社會功能情感職能精神健康126.23超重16090100745780886772219.47正常160951005240506310052332.31肥胖15390100748775883376425.83超重16010050725070886776520.2正常16395100624035753352630.6肥胖158100501006575883384720.96正常155951008467751006780818.05偏瘦16295100847780753380931.45肥胖1731001008477808867761032.43肥胖15595100745060883368實訓(xùn)5數(shù)據(jù)可視化分析案例第六章使用Matplotlib進行數(shù)據(jù)可視化分析續(xù)表6-7序號體質(zhì)指數(shù)BMI分類身高(cm)生理功能生理職能軀體疼痛總體健康活力社會功能情感職能精神健康1125.95超重160100507472658833881221.37正常162902572558010067881320.76正常15710010084678088100881420.2正常16095751007070100100761535.86肥胖160905010092801000801618.67正常1651001001007080100100801721.08正常153100100746560880761817.26偏瘦1581001008050808867841919.83正常1579510084876588100802021.09正常16410010010035757510080均值23.98—159.7596.258581.463.6570.7587.56076.8實訓(xùn)5數(shù)據(jù)可視化分析案例第六章使用Matplotlib進行數(shù)據(jù)可視化分析解題思路:1.計算偏瘦、正常、超重和肥胖四部分人數(shù)所占比重,得出結(jié)果分別為10%、50%、15%和25%,據(jù)此繪制餅狀圖;2.使用pipinstallopenpyxl語句安裝openpyxl庫,并導(dǎo)入load_workbook模塊進行Excel文件的讀取,獲取Sheet1表中的身高數(shù)據(jù)并繪制散點圖;3.根據(jù)Sheet2表《SF-36生活質(zhì)量調(diào)查表評分均值》中的數(shù)據(jù)可繪制雷達圖。代碼如下:pipinstallopenpyxlimportmatplotlib.pyplotaspltfig,axs=plt.subplots(1,2,figsize=(6,3))#創(chuàng)建一個1行2列的子圖布局,設(shè)置圖形大小為6x3英寸#繪制餅狀圖plt.subplot(1,2,1)#選擇第1個子圖作為當前活動子圖ex=(0.1,0,0,0)#設(shè)置每個扇形的偏移量實訓(xùn)5數(shù)據(jù)可視化分析案例第六章使用Matplotlib進行數(shù)據(jù)可視化分析plt.pie([10,50,15,25],labels=['偏瘦'
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省綿陽市平武縣2025-2026學(xué)年八年級上學(xué)期1月期末考試道德與法治試卷(含答案)
- 2025~2026學(xué)年濟南市天橋區(qū)九年級物理第一學(xué)期期末考試試題以及答案(含答案)
- 五年級下冊數(shù)學(xué)題目及答案
- 無領(lǐng)導(dǎo)討論題目及答案
- 危險化學(xué)品安全考試題及答案
- 強化訓(xùn)練人教版九年級數(shù)學(xué)上冊第二十四章圓專項練習(xí)試卷(含答案詳解)
- 初中前端培訓(xùn)課件
- 泵送混凝土施工技術(shù)操作要點
- 三菱PLC技術(shù)與應(yīng)用實訓(xùn)教程(FX3U)習(xí)題答案 模塊4 精英篇(高級技師)
- 實體經(jīng)濟政治試題及答案
- 特發(fā)性肺纖維化個體化治療中的營養(yǎng)支持策略
- 2026年度黑龍江省生態(tài)環(huán)境廳所屬事業(yè)單位公開招聘工作人員57人考試參考試題及答案解析
- (2025年)鐵路行車組織培訓(xùn)考試題附答案
- 血液儲存和出入庫管理制度
- 貴州省貴陽市2024-2025學(xué)年高一上學(xué)期期末監(jiān)測物理試卷(含解析)
- 稅收說理式執(zhí)法課件
- 2026年鄭州鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試模擬測試卷附答案
- 揚州市廣陵區(qū)2025年網(wǎng)格員考試題庫及答案
- 化工廠安全教育題庫試題和答案(教學(xué)資料)
- 員工遵守公司規(guī)定合規(guī)承諾書(3篇)
- 2026年藥品上市許可持有人(MAH)委托生產(chǎn)質(zhì)量協(xié)議
評論
0/150
提交評論