




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》配套課件Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》配套課件Python大數(shù)據(jù)基
第十章數(shù)據(jù)可視化技術(shù)第十章數(shù)據(jù)可視化技術(shù)10.1pyplot基本繪圖流程10.2基于函數(shù)的可視化操作10.3基于對象的可視化技術(shù)10.4配置文件10.5中文顯示10.6分類圖10.7seaborn可視化10.1pyplot基本繪圖流程10.2基于函數(shù)的可視化10.1pyplot繪圖基本流程10.110.1pyplot繪圖基本流程
matplotlib是一套基于NumPy的繪圖工具包,是Python中最著名的繪圖包之一。matplotlib十分適合交互式繪制圖表,可以很方便地設(shè)計和輸出二維和三維的圖表。matplotlib工具包提供了pyplot模塊完成對圖形的繪制,大部分的pyplot圖形繪制都遵循一個流程,使用這個流程可以完成大部分圖形的繪制。10.1pyplot繪圖基本流程matplot10.1pyplot繪圖基本流程10.1pyplot繪圖基本流程Matplotlib提出了ObjectContainer概念,它有Figure、Axes、Axis和Tick四種類型的對象容器。
Figure負責(zé)圖像大小、位置等操作。
Axes負責(zé)坐標系的位置、繪圖等操作。
Axis負責(zé)坐標軸的操作。
Tick負責(zé)刻度的相關(guān)操作。
Figure包含Axes、Axes包含Axis,Axis包含Tick。
Matplotlib提出了ObjectC10.2基于函數(shù)的可視化操作10.210.2基于函數(shù)的可視化操作
為了方便快速繪圖,matplotlib通過pyplot模塊提供了一套和matlab類似的繪圖函數(shù),只需要調(diào)用pyplot模塊所提供的函數(shù),就可以實現(xiàn)快速繪圖及設(shè)置圖表的各種細節(jié)。
#使用pyplot之前首先要導(dǎo)入所在的模塊
frommatplotlibimportpyplotaspltimportmatplotlib.pyplotasplt#將要顯示的圖片嵌入到JupyterNotebook中%matplotlibinline
10.2基于函數(shù)的可視化操作為了方便快速繪圖,mat10.2基于函數(shù)的可視化操作1.常用繪圖函數(shù)1)創(chuàng)建圖表和創(chuàng)建子圖繪圖前可以先創(chuàng)建一個空白的圖表,并且可以選擇是否將整個圖表劃分為多個子圖,以方便在同一幅圖上繪制多個圖形。當只需要繪制一幅簡單的圖形時,這部分內(nèi)容可以省略。figure()該函數(shù)創(chuàng)建一個圖表對象,并且成為當前的Figure對象。也可以不創(chuàng)建Figure對象而直接調(diào)用plot()進行繪圖,這時matplotlib會自動創(chuàng)建一個Figure對象。10.2基于函數(shù)的可視化操作1.常用繪圖函數(shù)subplot()可以將一個圖表劃分成多個子圖進行繪制,該函數(shù)用來設(shè)置子圖,第1個參數(shù)是行數(shù),第2個參數(shù)是列數(shù),第3個參數(shù)是子圖的編號subplots()
該函數(shù)返回Figure對象和子圖對應(yīng)的Axes對象數(shù)組,Axes是可以進行繪圖操作的對象10.2基于函數(shù)的可視化操作subplot()10.2基于函數(shù)的可視化操作2)添加圖表內(nèi)容添加標題、添加坐標軸名稱、繪制圖形、添加圖例等步驟是并列的,沒有先后順序??梢韵壤L制圖形,也可以先添加各種標簽。但是添加圖例一定要在繪制圖形之后。plot()
創(chuàng)建figure對象之后,接下來調(diào)用plot()在當前的figure對象中繪圖。plot()的前兩個參數(shù)是表示X、Y軸數(shù)據(jù)的對象,后面參數(shù)是一個格式化字符串,由顏色字符、風(fēng)格字符和標記字符組成10.2基于函數(shù)的可視化操作2)添加圖表內(nèi)容10.2基于函數(shù)的可視化操作title()、text()
在當前圖表中添加標題、文本注釋信息legend()
設(shè)置圖例xlabel()、ylabel()
添加X軸和Y軸名稱xlim()、ylim()
設(shè)置當前圖表的X軸和Y軸取值范圍xticks()、yticks()
指定X軸和Y軸刻度的數(shù)目與取值10.2基于函數(shù)的可視化操作title()、text()10.2基于函數(shù)的可視化操作3)保存與顯示圖形savefig()
保存繪制的圖形到文件中,可以指定圖形的分辨率、邊緣的顏色等參數(shù)show()顯示圖形10.2基于函數(shù)的可視化操作3)保存與顯示圖形10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作%matplotlibinlinefrommatplotlibimportpyplotasplt #導(dǎo)入pyplot庫importnumpyasnp #導(dǎo)入科學(xué)計算庫numpy#設(shè)置中文字體font={'family':"KaiTi", #字庫:楷體"weight":"bold", #加粗"size":16 #字號}plt.rc("font",**font) #設(shè)置配置參數(shù)plt.rc("axes",unicode_minus=False) #處理負號顯示問題10.2基于函數(shù)的可視化操作%matplotlibinl#創(chuàng)建繪圖數(shù)據(jù)x=np.arange(0.0,2.0,0.01) #x軸數(shù)據(jù)[0.0,2.0),間隔0.01y=1+np.sin(2*np.pi*x) #y軸數(shù)據(jù)1+sin(2Πx)fig=plt.figure(figsize=(20,8)) #設(shè)置圖片寬度20英寸,高度8英寸plt.plot(x,y,"r--") #繪圖參數(shù)設(shè)置plt.xlabel("時間/s") #設(shè)置x軸標簽plt.ylabel("電壓/mv") #設(shè)置y周標簽plt.title("第一個圖形示例")#設(shè)置圖片的標題t=[r"$1+sin(2\pi{x})$"]
#使用LaText語法描繪數(shù)學(xué)公式plt.legend(t,loc="upperleft",frameon=True) #設(shè)置圖例,位置左上,帶邊框10.2基于函數(shù)的可視化操作#創(chuàng)建繪圖數(shù)據(jù)10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作#savefig()函數(shù)保存圖表到文件,它的參數(shù)可以指定要保存的文件名、分辨率、去除四周空白plt.savefig(r"d:\test2.png",dpi=1000,bbox_inches='tight',pad_inches=0) plt.show()#顯示圖形10.2基于函數(shù)的可視化操作#savefig()函數(shù)保存圖10.2基于函數(shù)的可視化操作2.
繪制多個子圖一個Figure對象可以包含多個子圖(Axes),在matplotlib中用Axes對象表示一個繪圖區(qū)域(子圖)??梢杂胹ubplot()函數(shù)快速繪制包含多個子圖的圖表。
subplot(nrows,ncols,index,**kwargs)整個繪圖區(qū)域被等分為nrows行和ncols列,然后按照從左到右、從上到下的順序?qū)γ總€區(qū)域進行編號,左上區(qū)域的編號為1。index參數(shù)指定創(chuàng)建Axes對象所在的區(qū)域。如果3個參數(shù)的值都小于10,那么就可以把它們縮寫成一個整數(shù)。如223表示第2行第1列的子圖。10.2基于函數(shù)的可視化操作2.繪制多個子圖plt.figure(1) #創(chuàng)建圖表1plt.figure(2) #創(chuàng)建圖表2ax1=plt.subplot(211) #在圖表2中創(chuàng)建子圖1ax2=plt.subplot(212) #在圖表2中創(chuàng)建子圖2x=np.linspace(0,3,100) #生成X軸數(shù)據(jù)plt.figure(1)foriinrange(5):
plt.plot(x,np.exp(i*x/3),label=r"$e^{%dx}$"%i) #在圖表1中繪圖
plt.legend() #顯示圖例10.2基于函數(shù)的可視化操作plt.figure(1) #創(chuàng)
plt.sca(ax1) #選擇圖表2的子圖1
plt.plot(x,i+x,label=r"%d+x"%i) #在圖表2的子圖1中繪圖
plt.legend()
plt.sca(ax2) #選擇圖表2的子圖2
plt.plot(x,np.cos(i*x),label=r"cos%dx"%i) #在圖表2的子圖2中繪圖
plt.legend()
plt.figure(1)
plt.savefig("d:/test1.png") #圖表1存盤
plt.figure(2)
plt.show() 10.2基于函數(shù)的可視化操作 plt.sca(ax1) #選擇10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作10.3基于對象的可視化操作10.310.3
基于對象的可視化操作
為了將面向?qū)ο蟮睦L圖庫封裝成使用函數(shù)的調(diào)用接口,pyplot模塊內(nèi)部保存了當前圖表以及當前子圖等信息。當前的圖表和子圖可以通過gcf()和gca()獲得,其中g(shù)cf()獲得表示圖表的Figure對象,gca()獲得表示子圖的Axes對象。使用matplotlib繪制的圖表每個組成部分都和一個對象對應(yīng),可以通過調(diào)用這些對象的屬性設(shè)置方法set_*()或者pyplot模塊的屬性設(shè)置方法setp()來設(shè)置它們的屬性值,也可以通過屬性獲取方法get_*()或者pyplot模塊的屬性獲取方法getp()來獲取對象的屬性,或者直接獲取對象的屬性。10.3基于對象的可視化操作為了將面向?qū)ο蟮睦L圖庫封plt.rcParams["font.family"]="KaiTi" #使用楷體字庫plt.rcParams["font.size"]="16" #設(shè)置字體大小x=np.arange(0,5,0.1)
#生成X軸數(shù)據(jù)lines=plt.plot(x,x**2,x,x**3)#plot()返回一個元素類型為Line2D的列表lines[0].set_label(r"$x^2$") #設(shè)置第1個圖表的圖示x2lines[0]._color="r" #設(shè)置第1個圖表對象的顏色為紅色lines[0].set_linestyle("--") #設(shè)置第1個圖表的線型為虛線plt.setp(lines[1],color="g",label=r"$x^3$")#設(shè)置第2個圖表的顏色和圖示plt.setp(lines,linewidth=3.0) #兩個圖表線寬統(tǒng)一設(shè)置為3print(lines[1]._label) #直接獲取第2個圖表對象的label屬性10.3
基于對象的可視化操作plt.rcParams["font.family"]=%matplotlibinlineimportnumpyasnpfrommatplotlibimportpyplotasplt#X軸和Y軸數(shù)據(jù)x=np.linspace(-1.5*np.pi,2*np.pi,256,endpoint=True)y=np.cos(x)#創(chuàng)建figure對象fig=plt.figure(figsize=(10,4),dpi=1000)#figure對象獲取axes對象ax1=fig.add_subplot(211)#axes對象繪圖ax1.plot(x,y,color="b",linewidth=2.5,linestyle="-",label="cosine")10.3
基于對象的可視化操作%matplotlibinline10.3基于對象的可視#axes對象調(diào)整坐標軸ax1.spines['right'].set_color("none")ax1.spines['top'].set_color("none")ax1.spines['bottom'].set_position(('data',0))ax1.spines['left'].set_position(('data',0))#axes對象獲取axis對象x_axis=ax1.get_xaxis()y_axis=ax1.get_yaxis()#axis對象設(shè)置數(shù)據(jù)軸寬度、修改刻度、刻度標簽x_axis.set_data_interval(x.min()*1.1,x.max()*1.1)x_axis.set_ticks([-1.5*np.pi,-np.pi,-np.pi/2.0,0,np.pi/2.0,np.pi,1.5*np.pi,2*np.pi])x_axis.set_ticklabels([r"$-3/2\pi$",r"$-\pi$",r"$-\pi/2$",r"$0$",r"$+\pi/2$",r"$+\pi$",r"$+3/2\pi$",r"$+2\pi$"])y_axis.set_data_interval(y.min()*1.1,y.max()*1.1)y_axis.set_ticks([-1,+1])y_axis.set_ticklabels([r"$-1$",r"$+1$"])10.3
基于對象的可視化操作#axes對象調(diào)整坐標軸10.3基于對象的可視化操作#axis對象設(shè)置刻度位置x_axis.set_ticks_position("bottom")y_axis.set_ticks_position("left")#figure對象添加axes對象ax2=fig.add_subplot(212)t=2*np.pi/3ax2.plot([t,t,0],[0,np.sin(t),0],color="r",linewidth=1.5,linestyle="--",label="axis2")ax1.legend(loc="upperleft",frameon=False)ax2.legend(loc="upperleft",frameon=False)fig.show()10.3
基于對象的可視化操作#axis對象設(shè)置刻度位置10.3基于對象的可視化操作10.4配置文件10.4matplotlibrc配置文件是一個文本文件,它實際上是一個字典。配置文件的讀入可以使用rc_params()函數(shù),它返回一個配置字典。matplotlib模塊在載入時會自動調(diào)用rc_params(),并把得到的配置保存到rcParams字典變量中。matplotlib使用rcParams字典中的配置進行繪圖,用戶可以直接修改此字典中的配置。10.4
配置文件matplotlibrc配置文件是一個文本文件,它實際上是一10.5中文顯示10.5matplotlib默認配置文件中使用的字體無法正確顯示中文字符,為了讓圖表能正確顯示中文字符,有3種解決方案:代碼中直接指定字體修改配置字典變量rcParams中鍵對應(yīng)的值修改配置文件如果要使用windows中Fonts目錄下眾多的復(fù)合字體文件(*.ttc),可以直接創(chuàng)建字體文件的FontsProperties對象,并使用此對象指定圖表中各種文字的字體。frommatplotlib.font_managerimportFontPropertiesfont=FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=16)10.5中文顯示matplotlib默認配置文件中使用的字體無法正確顯示中文10.6分類圖10.6繪制對數(shù)坐標圖的函數(shù)主要有3個,分別是:semilogx()、semilogy()和loglog(),它們分別繪制X軸、Y軸以及XY軸為對數(shù)坐標的圖表。10.6.1
對數(shù)坐標圖繪制對數(shù)坐標圖的函數(shù)主要有3個,分別是:10.6.1對數(shù)坐創(chuàng)建極坐標圖表可以通過subplot()函數(shù)來完成,設(shè)置該函數(shù)的關(guān)鍵值參數(shù)poplar=True即可。使用rgrids()函數(shù)設(shè)置同心圓柵格的半徑大小和文字標注角度,使用thetagrids()設(shè)置放射線柵格的角度。plt.subplot(121,polar=True) #創(chuàng)建極坐標子圖1plt.plot(theta,theta/6,linewidth=2.0)plt.plot(3*theta,theta/3,"--",linewidth=2.0)plt.rgrids(np.arange(0.5,2,0.5),angle=45) plt.thetagrids([0,60]) 10.6.2極坐標圖創(chuàng)建極坐標圖表可以通過subplot()函數(shù)來完成,設(shè)置該函直方圖是為了直觀顯示數(shù)據(jù)的分布情況,直方圖的橫軸表示數(shù)據(jù),縱軸表示數(shù)據(jù)出現(xiàn)的次數(shù)。使用hist()函數(shù)可以繪制直方圖,它的第1個參數(shù)表示數(shù)據(jù),不能省略,其它參數(shù)為關(guān)鍵字參數(shù),其中bins表示直方圖的柱子數(shù),normed表示是否歸一化,alpha表示透明度,histtype設(shè)置直方圖的類型,facecolor設(shè)置顏色等。10.6.3直方圖直方圖是為了直觀顯示數(shù)據(jù)的分布情況,直方圖的橫軸表示數(shù)據(jù),縱frommatplotlibimportpyplotaspltdata1=np.random.randn(100000)#生成100000個(0,1)符合正態(tài)分布的樣本data2=np.random.rand(100000)#生成100000個(0,1)符合均勻分布的樣本plt.hist(data1,100,alpha=0.7,normed=True)plt.hist(data2,100,alpha=0.4,normed=True)plt.grid(True,ls='--') #繪制網(wǎng)格plt.legend(["Normal","Uniform"])
#設(shè)置圖例plt.show()10.6.3直方圖frommatplotlibimportpyplot10.6.3直方圖10.6.3直方圖柱狀圖用每根柱子的長度表示值的大小,它們通常用來比較兩組或多組值。柱狀圖主要用于查看各分組數(shù)據(jù)的數(shù)量分布,以及各個分組數(shù)據(jù)之間的數(shù)量比較。使用bar()函數(shù)可以繪制垂直柱狀圖,它的第1個參數(shù)為每根柱子左邊緣的橫坐標,第2個參數(shù)為每根柱子的高度,第三個參數(shù)指定所有柱子的寬度,默認是0.8。grid()函數(shù)用于繪制網(wǎng)格,通過對參數(shù)的個性化設(shè)置,可以繪制出個性化的網(wǎng)格。10.6.4柱狀圖柱狀圖用每根柱子的長度表示值的大小,它們通常用來比較兩組或多data1=[107,115,145,212,280,338,350,358,368]data2=[190,260,310,380,410,500,510,580,600] years=np.arange(2000,2009,1) #創(chuàng)建數(shù)組plt.figure(figsize=(10,6))plt.bar(years,data2,label="大學(xué)錄取人數(shù)",color="b",width=0.3,alpha=0.3)forx,yinzip(years,data2):plt.text(x,y,y,ha="center",va="bottom")plt.bar(years+0.3,data1,label="大學(xué)畢業(yè)人數(shù)",color="g",width=0.3,alpha=0.6)plt.grid(color="r",linestyle="--",linewidth=1,axis="y",alpha=0.4) forx,zinzip(years+0.3,data1):plt.text(x,z,z,ha="center",va="bottom") plt.xlabel("年度")plt.ylabel("大學(xué)錄取/畢業(yè)人數(shù)(萬)")plt.title("中國大學(xué)錄取/畢業(yè)人數(shù)數(shù)據(jù)(2000年-2008年)")10.6.4柱狀圖data1=[107,115,145,212,280,310.6.4柱狀圖10.6.4柱狀圖10.6.5餅狀圖
餅狀圖是將各項的大小與各項總和的比例顯示在一張“餅”上,以“餅”的大小來確定每一項的占比。餅狀圖可以比較清楚地反映出部分與部分、部分與整體之間的比例關(guān)系,易于顯示每組數(shù)據(jù)相對于總數(shù)的大小,而且顯示方式比較直觀。
pyplot中繪制餅狀圖使用函數(shù)pie()。pie()中參數(shù)startangel設(shè)置開始角度,autopct設(shè)置數(shù)值顯示方式,radius設(shè)置半徑,默認為110.6.5餅狀圖餅狀圖是將各項的大小與各項總和的比fig=plt.figure(figsize=(8,3))ax1=fig.add_subplot(1,2,1) #定義子圖1plt.sca(ax1) #選擇子圖1plt.pie(data1,explode=explode1,labels=label1,autopct="%1.1f%%",startangle=45,radius=0.8)ax2=fig.add_subplot(1,2,2) #定義子圖2plt.sca(ax2) #選擇子圖2plt.pie(data2,explode=explode2,labels=label2,autopct="%1.1f%%",startangle=90)plt.show()10.6.5餅狀圖fig=plt.figure(figsize=(8,3)10.6.5餅狀圖10.6.5餅狀圖10.6.6散點圖
散點圖可以用來呈現(xiàn)數(shù)據(jù)點的分布,表現(xiàn)兩個元素之間的相關(guān)性。
scatter()函數(shù)可以用來繪制散點圖,傳入X和Y軸坐標數(shù)據(jù)即可。x=np.random.random(50) #產(chǎn)生50個0到1之間的隨機數(shù)y=x+np.random.random(50)/8 #模擬X和Y之間的相關(guān)性plt.scatter(x,y,s=x*300,c='r',marker='*') #參數(shù)s指定大小,c設(shè)置顏色,marker設(shè)置形狀plt.show()10.6.6散點圖散點圖可以用來呈現(xiàn)數(shù)據(jù)點的分布10.6.7箱線圖
箱線圖可以觀察最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)和最大值,它可以粗略地看出數(shù)據(jù)是否具有對稱性、分布的分散程度等信息,特別是可以對幾個樣本進行比較。
pyplot中繪制箱線圖的函數(shù)是boxplot()。boxplot()函數(shù)中參數(shù)notch設(shè)置中間箱體是否有缺口,labels指定箱線圖的標簽,meanline表示是否顯示均值線
data1=[107,115,145,212,280,338,350,358,368]data2=[900,260,310,380,410,500,510,580,600]label=["畢業(yè)人數(shù)","錄取人數(shù)"]plt.boxplot((data1,data2),notch=True,labels=label,meanline=True) 10.6.7箱線圖箱線圖可以觀察最小值、下四分位數(shù)、10.6.8三維繪圖
mpl_toolkits.mplot3d模塊在matplotlib基礎(chǔ)上提供了三維繪圖的功能,由于它使用matplotlib的二維繪圖功能來實現(xiàn)三維圖形的繪制工作,因此繪圖速度有限,不適合用于大規(guī)模的三維繪圖。如果讀者需要更加復(fù)雜的三維數(shù)據(jù)可視化功能,可以使用Mayavi。
10.6.8三維繪圖mpl_toolkits.mp10.7seaborn可視化10.710.7.1seaborn樣式seaborn預(yù)先設(shè)計好了5種主題樣式:darkgrid、dark、whitegrid、white和ticks,默認使用darkgrid主題樣式。searborn庫的set()方法可以設(shè)置主題、調(diào)色板等多個樣式。importseabornassns #導(dǎo)入seaborn擴展庫sns.set(style="whitegrid",palette="muted",color_codes=True) #set()中style參數(shù)設(shè)置主題,palette參數(shù)設(shè)置調(diào)色板,color_codes參數(shù)設(shè)置顏色代碼10.7.1seaborn樣式seaborn預(yù)先設(shè)計好了510.7.2分類圖
1.散點圖通過seaborn庫的stripplot()函數(shù)可以繪制散點圖,當散點圖中數(shù)據(jù)較多時,很多散點會被覆蓋,可以通過加入抖動(jitter=True)來解決。如果要看清每個數(shù)據(jù)點,可以使用swarmplot()函數(shù),該函數(shù)的參數(shù)x和y表示列名,hue參數(shù)表示顏色分類10.7.2分類圖1.散點圖10.7.2分類圖1.散點圖sns.set(style="ticks")tips=sns.load_dataset("tips")#使用seaborn自帶tips數(shù)據(jù)集fig,axes=plt.subplots(1,2,figsize=(8,4))sns.stripplot(x='day',y="total_bill",ax=axes[0],data=tips,hue="smoker") #當數(shù)據(jù)點多時,出現(xiàn)覆蓋情況sns.swarmplot(x='day',y="total_bill",ax=axes[1],data=tips) #避免出現(xiàn)覆蓋情況sns.despine()#去掉邊框10.7.2分類圖1.散點圖2.箱線圖在seaborn中使用boxplot()函數(shù)來繪制箱線圖。sns.set(style="ticks")sns.boxplot(x="day",y="total_bill",hue="smoker",orient="v",palette="Set3",data=tips)#參數(shù)orient設(shè)置朝向,取“v”時沿Y軸方向繪圖,取“h”時沿X軸方向繪圖#x、y參數(shù)表示要繪制的列,hue參數(shù)表示分類變量sns.despine()plt.savefig(r"d:\test.png",dpi=1000,bbox_inches='tight',pad_inches=0)10.7.2分類圖2.箱線圖10.7.2分類圖3.琴形圖琴形圖結(jié)合了箱線圖與核密度估計圖,在seaborn中,使用violinplot()函數(shù)來繪制琴形圖。fig,axes=plt.subplots(1,2,figsize=(13,6)) #創(chuàng)建多子圖,返回fig和axes對象#split參數(shù)可以將分類數(shù)據(jù)進行切分,這樣兩邊的顏色就代表了不同的類別sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,split=True,ax=axes[0])#hue參數(shù)指定分類依據(jù),inner參數(shù)對每個數(shù)據(jù)進行可視化sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,inner="stick",ax=axes[1])#琴形圖可以和分類函數(shù)相互結(jié)合,實現(xiàn)更加強大的可視化效果sns.swarmplot(x="day",y="total_bill",data=tips,color="R",alpha=.6,ax=axes[0])3.琴形圖4.柱狀圖seaborn中使用barplot()函數(shù)來繪制柱狀圖,默認情況下使用該函數(shù)繪制的y軸是變量分布的平均值,并且在每個柱狀條上繪制誤差線。sns.barplot(x="day",y="tip",hue="sex",data=tips)4.柱狀圖
5.計數(shù)圖柱狀圖中,常常繪制類別的計數(shù)柱狀圖。在seaborn中,使用countplot()函數(shù)就可以完成。sns.countplot(x="day",data=tips,palette="Set2")5.計數(shù)圖
6.分組關(guān)系圖seaborn中,使用factorplot()函數(shù)完成分組統(tǒng)計功能。sns.factorplot(x="size",col="sex",data=tips,col_wrap=2,kind="count",size=4,aspect=.9)#參數(shù)col指定分組依據(jù),參數(shù)col_wrap指定每行最多平鋪數(shù),kind指定繪圖類型,size參數(shù)指定每個面的高度,aspect參數(shù)指定縱橫比,每個面的寬度由size×aspect共同確定。6.分組關(guān)系圖
7.單變量分布圖單變量分布圖的繪制使用seaborn中的distplot()函數(shù),默認情況下繪制一個直方圖,并嵌套一個與之對應(yīng)的密度圖。fig,axes=plt.subplots(2,2,figsize=(10,6))#多子圖方式繪圖sns.distplot(tips["tip"],ax=axes[0][0]) #默認方式繪制一個直方圖和密度圖sns.distplot(tips["tip"],kde=False,ax=axes[0][1]) #kde為False時不繪制密度圖sns.distplot(tips["tip"],hist=False,ax=axes[1][0])#hist為False時不繪制直方圖sns.distplot(tips["tip"],rug=True,ax=axes[1][1]) #rug為True時為每個樣本點添加小細線7.單變量分布圖
8.多變量分布圖為了繪制兩個變量的分布關(guān)系,常常使用散點圖的方法。在seaborn中,使用jointplot()函數(shù)繪制一個多面板圖,不僅可以顯示兩個變量的關(guān)系,還可以顯示每個單變量的分布關(guān)系。sns.jointplot(x="tip",y="total_bill",data=tips,kind="reg",color="b")#參數(shù)x、y表示數(shù)據(jù)集中的列名,只能是數(shù)字。#參數(shù)data表示數(shù)據(jù)集,參數(shù)kind表示分類圖的類型#kind取kde表示密度圖,kind取reg表示回歸圖,kind默認取scatter表示點散圖8.多變量分布圖
在數(shù)據(jù)集中,如果要體現(xiàn)多個變量的分布情況,就需要成對的二元分布圖。在seaborn中,可以使用pairplot()函數(shù)來完成二元分布圖,該函數(shù)會創(chuàng)建一個軸矩陣,以此顯示每兩列的關(guān)系,在主對角線上為單變量的分布情況。pairplot()只對數(shù)值型的列有效,其中參數(shù)diag_kind表示對角線子圖的類型,可以取hist和kde,分別表示直方圖和密度圖,默認對角線為直方圖;參數(shù)hue指定分類變量;參數(shù)kind指定非對角線子圖類型,默認為散點圖,取reg時為回歸圖,取scatter時為散點圖。sns.pairplot(tips,diag_kind="hist",hue="sex",markers=["x","o"])在數(shù)據(jù)集中,如果要體現(xiàn)多個變量的分布情況,就需要成對的二9.熱力圖利用熱力圖可以查看數(shù)據(jù)集中多個特征之間兩兩相關(guān)性的強弱。seaborn中heatmap()函數(shù)提供了熱力圖的繪制功能。ssns.set(font='SimHei') #設(shè)置中文字體sns.heatmap(tips.corr(),xticklabels=True,yticklabels=True,cmap='rainbow',annot=True,square=True)#tips.corr()計算tips數(shù)據(jù)集中每兩列之間的相關(guān)性,xticklabels參數(shù)為True時,繪制列名,annot參數(shù)決定是否在網(wǎng)格中寫入數(shù)字,square參數(shù)設(shè)置網(wǎng)格是否為正方形,cmap參數(shù)是colormap對象名或者顏色名稱,fnt參數(shù)指定網(wǎng)格中數(shù)據(jù)的顯示格式9.熱力圖10.回歸圖回歸圖,來揭示兩個變量之間的線性關(guān)系。seaborn中使用regplot()和lmplot()函數(shù)來繪制回歸圖,其繪制的圖表是一樣的,但是兩者傳入的參數(shù)略有不同。
sns.lmplot("total_bill","tip",hue="smoker",markers=["x","o"],data=tips)#使用hue參數(shù)可以加入一個分類變量,通過不同顏色來表示10.回歸圖總結(jié)數(shù)據(jù)可視化可以方便有效地傳達與溝通信息,Python提供了眾多的數(shù)據(jù)可視化工具包,其中matplotlib是經(jīng)典的二維圖形繪制工具包,借助它可以繪制日常中常見的圖表,但是其在主題、數(shù)據(jù)簡單分析方面有一定欠缺。seaborn作為matplotlib的擴展包,正好彌補這方面的缺陷。本章詳細介紹了折線圖、箱線圖、餅圖、散點圖、柱狀圖、琴形圖、回歸圖的繪制方法,使用時可以根據(jù)每種圖表的特點合理選用,通過圖表分析數(shù)據(jù)潛在關(guān)聯(lián),發(fā)現(xiàn)數(shù)據(jù)后面隱藏的有價值信息。總結(jié)數(shù)據(jù)可視化可以方便有效地傳達與溝通信息,Python提供感謝感謝謝謝,精品課件資料搜集謝謝,精品課件資料搜集《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》配套課件Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》配套課件Python大數(shù)據(jù)基
第十章數(shù)據(jù)可視化技術(shù)第十章數(shù)據(jù)可視化技術(shù)10.1pyplot基本繪圖流程10.2基于函數(shù)的可視化操作10.3基于對象的可視化技術(shù)10.4配置文件10.5中文顯示10.6分類圖10.7seaborn可視化10.1pyplot基本繪圖流程10.2基于函數(shù)的可視化10.1pyplot繪圖基本流程10.110.1pyplot繪圖基本流程
matplotlib是一套基于NumPy的繪圖工具包,是Python中最著名的繪圖包之一。matplotlib十分適合交互式繪制圖表,可以很方便地設(shè)計和輸出二維和三維的圖表。matplotlib工具包提供了pyplot模塊完成對圖形的繪制,大部分的pyplot圖形繪制都遵循一個流程,使用這個流程可以完成大部分圖形的繪制。10.1pyplot繪圖基本流程matplot10.1pyplot繪圖基本流程10.1pyplot繪圖基本流程Matplotlib提出了ObjectContainer概念,它有Figure、Axes、Axis和Tick四種類型的對象容器。
Figure負責(zé)圖像大小、位置等操作。
Axes負責(zé)坐標系的位置、繪圖等操作。
Axis負責(zé)坐標軸的操作。
Tick負責(zé)刻度的相關(guān)操作。
Figure包含Axes、Axes包含Axis,Axis包含Tick。
Matplotlib提出了ObjectC10.2基于函數(shù)的可視化操作10.210.2基于函數(shù)的可視化操作
為了方便快速繪圖,matplotlib通過pyplot模塊提供了一套和matlab類似的繪圖函數(shù),只需要調(diào)用pyplot模塊所提供的函數(shù),就可以實現(xiàn)快速繪圖及設(shè)置圖表的各種細節(jié)。
#使用pyplot之前首先要導(dǎo)入所在的模塊
frommatplotlibimportpyplotaspltimportmatplotlib.pyplotasplt#將要顯示的圖片嵌入到JupyterNotebook中%matplotlibinline
10.2基于函數(shù)的可視化操作為了方便快速繪圖,mat10.2基于函數(shù)的可視化操作1.常用繪圖函數(shù)1)創(chuàng)建圖表和創(chuàng)建子圖繪圖前可以先創(chuàng)建一個空白的圖表,并且可以選擇是否將整個圖表劃分為多個子圖,以方便在同一幅圖上繪制多個圖形。當只需要繪制一幅簡單的圖形時,這部分內(nèi)容可以省略。figure()該函數(shù)創(chuàng)建一個圖表對象,并且成為當前的Figure對象。也可以不創(chuàng)建Figure對象而直接調(diào)用plot()進行繪圖,這時matplotlib會自動創(chuàng)建一個Figure對象。10.2基于函數(shù)的可視化操作1.常用繪圖函數(shù)subplot()可以將一個圖表劃分成多個子圖進行繪制,該函數(shù)用來設(shè)置子圖,第1個參數(shù)是行數(shù),第2個參數(shù)是列數(shù),第3個參數(shù)是子圖的編號subplots()
該函數(shù)返回Figure對象和子圖對應(yīng)的Axes對象數(shù)組,Axes是可以進行繪圖操作的對象10.2基于函數(shù)的可視化操作subplot()10.2基于函數(shù)的可視化操作2)添加圖表內(nèi)容添加標題、添加坐標軸名稱、繪制圖形、添加圖例等步驟是并列的,沒有先后順序??梢韵壤L制圖形,也可以先添加各種標簽。但是添加圖例一定要在繪制圖形之后。plot()
創(chuàng)建figure對象之后,接下來調(diào)用plot()在當前的figure對象中繪圖。plot()的前兩個參數(shù)是表示X、Y軸數(shù)據(jù)的對象,后面參數(shù)是一個格式化字符串,由顏色字符、風(fēng)格字符和標記字符組成10.2基于函數(shù)的可視化操作2)添加圖表內(nèi)容10.2基于函數(shù)的可視化操作title()、text()
在當前圖表中添加標題、文本注釋信息legend()
設(shè)置圖例xlabel()、ylabel()
添加X軸和Y軸名稱xlim()、ylim()
設(shè)置當前圖表的X軸和Y軸取值范圍xticks()、yticks()
指定X軸和Y軸刻度的數(shù)目與取值10.2基于函數(shù)的可視化操作title()、text()10.2基于函數(shù)的可視化操作3)保存與顯示圖形savefig()
保存繪制的圖形到文件中,可以指定圖形的分辨率、邊緣的顏色等參數(shù)show()顯示圖形10.2基于函數(shù)的可視化操作3)保存與顯示圖形10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作%matplotlibinlinefrommatplotlibimportpyplotasplt #導(dǎo)入pyplot庫importnumpyasnp #導(dǎo)入科學(xué)計算庫numpy#設(shè)置中文字體font={'family':"KaiTi", #字庫:楷體"weight":"bold", #加粗"size":16 #字號}plt.rc("font",**font) #設(shè)置配置參數(shù)plt.rc("axes",unicode_minus=False) #處理負號顯示問題10.2基于函數(shù)的可視化操作%matplotlibinl#創(chuàng)建繪圖數(shù)據(jù)x=np.arange(0.0,2.0,0.01) #x軸數(shù)據(jù)[0.0,2.0),間隔0.01y=1+np.sin(2*np.pi*x) #y軸數(shù)據(jù)1+sin(2Πx)fig=plt.figure(figsize=(20,8)) #設(shè)置圖片寬度20英寸,高度8英寸plt.plot(x,y,"r--") #繪圖參數(shù)設(shè)置plt.xlabel("時間/s") #設(shè)置x軸標簽plt.ylabel("電壓/mv") #設(shè)置y周標簽plt.title("第一個圖形示例")#設(shè)置圖片的標題t=[r"$1+sin(2\pi{x})$"]
#使用LaText語法描繪數(shù)學(xué)公式plt.legend(t,loc="upperleft",frameon=True) #設(shè)置圖例,位置左上,帶邊框10.2基于函數(shù)的可視化操作#創(chuàng)建繪圖數(shù)據(jù)10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作#savefig()函數(shù)保存圖表到文件,它的參數(shù)可以指定要保存的文件名、分辨率、去除四周空白plt.savefig(r"d:\test2.png",dpi=1000,bbox_inches='tight',pad_inches=0) plt.show()#顯示圖形10.2基于函數(shù)的可視化操作#savefig()函數(shù)保存圖10.2基于函數(shù)的可視化操作2.
繪制多個子圖一個Figure對象可以包含多個子圖(Axes),在matplotlib中用Axes對象表示一個繪圖區(qū)域(子圖)??梢杂胹ubplot()函數(shù)快速繪制包含多個子圖的圖表。
subplot(nrows,ncols,index,**kwargs)整個繪圖區(qū)域被等分為nrows行和ncols列,然后按照從左到右、從上到下的順序?qū)γ總€區(qū)域進行編號,左上區(qū)域的編號為1。index參數(shù)指定創(chuàng)建Axes對象所在的區(qū)域。如果3個參數(shù)的值都小于10,那么就可以把它們縮寫成一個整數(shù)。如223表示第2行第1列的子圖。10.2基于函數(shù)的可視化操作2.繪制多個子圖plt.figure(1) #創(chuàng)建圖表1plt.figure(2) #創(chuàng)建圖表2ax1=plt.subplot(211) #在圖表2中創(chuàng)建子圖1ax2=plt.subplot(212) #在圖表2中創(chuàng)建子圖2x=np.linspace(0,3,100) #生成X軸數(shù)據(jù)plt.figure(1)foriinrange(5):
plt.plot(x,np.exp(i*x/3),label=r"$e^{%dx}$"%i) #在圖表1中繪圖
plt.legend() #顯示圖例10.2基于函數(shù)的可視化操作plt.figure(1) #創(chuàng)
plt.sca(ax1) #選擇圖表2的子圖1
plt.plot(x,i+x,label=r"%d+x"%i) #在圖表2的子圖1中繪圖
plt.legend()
plt.sca(ax2) #選擇圖表2的子圖2
plt.plot(x,np.cos(i*x),label=r"cos%dx"%i) #在圖表2的子圖2中繪圖
plt.legend()
plt.figure(1)
plt.savefig("d:/test1.png") #圖表1存盤
plt.figure(2)
plt.show() 10.2基于函數(shù)的可視化操作 plt.sca(ax1) #選擇10.2基于函數(shù)的可視化操作10.2基于函數(shù)的可視化操作10.3基于對象的可視化操作10.310.3
基于對象的可視化操作
為了將面向?qū)ο蟮睦L圖庫封裝成使用函數(shù)的調(diào)用接口,pyplot模塊內(nèi)部保存了當前圖表以及當前子圖等信息。當前的圖表和子圖可以通過gcf()和gca()獲得,其中g(shù)cf()獲得表示圖表的Figure對象,gca()獲得表示子圖的Axes對象。使用matplotlib繪制的圖表每個組成部分都和一個對象對應(yīng),可以通過調(diào)用這些對象的屬性設(shè)置方法set_*()或者pyplot模塊的屬性設(shè)置方法setp()來設(shè)置它們的屬性值,也可以通過屬性獲取方法get_*()或者pyplot模塊的屬性獲取方法getp()來獲取對象的屬性,或者直接獲取對象的屬性。10.3基于對象的可視化操作為了將面向?qū)ο蟮睦L圖庫封plt.rcParams["font.family"]="KaiTi" #使用楷體字庫plt.rcParams["font.size"]="16" #設(shè)置字體大小x=np.arange(0,5,0.1)
#生成X軸數(shù)據(jù)lines=plt.plot(x,x**2,x,x**3)#plot()返回一個元素類型為Line2D的列表lines[0].set_label(r"$x^2$") #設(shè)置第1個圖表的圖示x2lines[0]._color="r" #設(shè)置第1個圖表對象的顏色為紅色lines[0].set_linestyle("--") #設(shè)置第1個圖表的線型為虛線plt.setp(lines[1],color="g",label=r"$x^3$")#設(shè)置第2個圖表的顏色和圖示plt.setp(lines,linewidth=3.0) #兩個圖表線寬統(tǒng)一設(shè)置為3print(lines[1]._label) #直接獲取第2個圖表對象的label屬性10.3
基于對象的可視化操作plt.rcParams["font.family"]=%matplotlibinlineimportnumpyasnpfrommatplotlibimportpyplotasplt#X軸和Y軸數(shù)據(jù)x=np.linspace(-1.5*np.pi,2*np.pi,256,endpoint=True)y=np.cos(x)#創(chuàng)建figure對象fig=plt.figure(figsize=(10,4),dpi=1000)#figure對象獲取axes對象ax1=fig.add_subplot(211)#axes對象繪圖ax1.plot(x,y,color="b",linewidth=2.5,linestyle="-",label="cosine")10.3
基于對象的可視化操作%matplotlibinline10.3基于對象的可視#axes對象調(diào)整坐標軸ax1.spines['right'].set_color("none")ax1.spines['top'].set_color("none")ax1.spines['bottom'].set_position(('data',0))ax1.spines['left'].set_position(('data',0))#axes對象獲取axis對象x_axis=ax1.get_xaxis()y_axis=ax1.get_yaxis()#axis對象設(shè)置數(shù)據(jù)軸寬度、修改刻度、刻度標簽x_axis.set_data_interval(x.min()*1.1,x.max()*1.1)x_axis.set_ticks([-1.5*np.pi,-np.pi,-np.pi/2.0,0,np.pi/2.0,np.pi,1.5*np.pi,2*np.pi])x_axis.set_ticklabels([r"$-3/2\pi$",r"$-\pi$",r"$-\pi/2$",r"$0$",r"$+\pi/2$",r"$+\pi$",r"$+3/2\pi$",r"$+2\pi$"])y_axis.set_data_interval(y.min()*1.1,y.max()*1.1)y_axis.set_ticks([-1,+1])y_axis.set_ticklabels([r"$-1$",r"$+1$"])10.3
基于對象的可視化操作#axes對象調(diào)整坐標軸10.3基于對象的可視化操作#axis對象設(shè)置刻度位置x_axis.set_ticks_position("bottom")y_axis.set_ticks_position("left")#figure對象添加axes對象ax2=fig.add_subplot(212)t=2*np.pi/3ax2.plot([t,t,0],[0,np.sin(t),0],color="r",linewidth=1.5,linestyle="--",label="axis2")ax1.legend(loc="upperleft",frameon=False)ax2.legend(loc="upperleft",frameon=False)fig.show()10.3
基于對象的可視化操作#axis對象設(shè)置刻度位置10.3基于對象的可視化操作10.4配置文件10.4matplotlibrc配置文件是一個文本文件,它實際上是一個字典。配置文件的讀入可以使用rc_params()函數(shù),它返回一個配置字典。matplotlib模塊在載入時會自動調(diào)用rc_params(),并把得到的配置保存到rcParams字典變量中。matplotlib使用rcParams字典中的配置進行繪圖,用戶可以直接修改此字典中的配置。10.4
配置文件matplotlibrc配置文件是一個文本文件,它實際上是一10.5中文顯示10.5matplotlib默認配置文件中使用的字體無法正確顯示中文字符,為了讓圖表能正確顯示中文字符,有3種解決方案:代碼中直接指定字體修改配置字典變量rcParams中鍵對應(yīng)的值修改配置文件如果要使用windows中Fonts目錄下眾多的復(fù)合字體文件(*.ttc),可以直接創(chuàng)建字體文件的FontsProperties對象,并使用此對象指定圖表中各種文字的字體。frommatplotlib.font_managerimportFontPropertiesfont=FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=16)10.5中文顯示matplotlib默認配置文件中使用的字體無法正確顯示中文10.6分類圖10.6繪制對數(shù)坐標圖的函數(shù)主要有3個,分別是:semilogx()、semilogy()和loglog(),它們分別繪制X軸、Y軸以及XY軸為對數(shù)坐標的圖表。10.6.1
對數(shù)坐標圖繪制對數(shù)坐標圖的函數(shù)主要有3個,分別是:10.6.1對數(shù)坐創(chuàng)建極坐標圖表可以通過subplot()函數(shù)來完成,設(shè)置該函數(shù)的關(guān)鍵值參數(shù)poplar=True即可。使用rgrids()函數(shù)設(shè)置同心圓柵格的半徑大小和文字標注角度,使用thetagrids()設(shè)置放射線柵格的角度。plt.subplot(121,polar=True) #創(chuàng)建極坐標子圖1plt.plot(theta,theta/6,linewidth=2.0)plt.plot(3*theta,theta/3,"--",linewidth=2.0)plt.rgrids(np.arange(0.5,2,0.5),angle=45) plt.thetagrids([0,60]) 10.6.2極坐標圖創(chuàng)建極坐標圖表可以通過subplot()函數(shù)來完成,設(shè)置該函直方圖是為了直觀顯示數(shù)據(jù)的分布情況,直方圖的橫軸表示數(shù)據(jù),縱軸表示數(shù)據(jù)出現(xiàn)的次數(shù)。使用hist()函數(shù)可以繪制直方圖,它的第1個參數(shù)表示數(shù)據(jù),不能省略,其它參數(shù)為關(guān)鍵字參數(shù),其中bins表示直方圖的柱子數(shù),normed表示是否歸一化,alpha表示透明度,histtype設(shè)置直方圖的類型,facecolor設(shè)置顏色等。10.6.3直方圖直方圖是為了直觀顯示數(shù)據(jù)的分布情況,直方圖的橫軸表示數(shù)據(jù),縱frommatplotlibimportpyplotaspltdata1=np.random.randn(100000)#生成100000個(0,1)符合正態(tài)分布的樣本data2=np.random.rand(100000)#生成100000個(0,1)符合均勻分布的樣本plt.hist(data1,100,alpha=0.7,normed=True)plt.hist(data2,100,alpha=0.4,normed=True)plt.grid(True,ls='--') #繪制網(wǎng)格plt.legend(["Normal","Uniform"])
#設(shè)置圖例plt.show()10.6.3直方圖frommatplotlibimportpyplot10.6.3直方圖10.6.3直方圖柱狀圖用每根柱子的長度表示值的大小,它們通常用來比較兩組或多組值。柱狀圖主要用于查看各分組數(shù)據(jù)的數(shù)量分布,以及各個分組數(shù)據(jù)之間的數(shù)量比較。使用bar()函數(shù)可以繪制垂直柱狀圖,它的第1個參數(shù)為每根柱子左邊緣的橫坐標,第2個參數(shù)為每根柱子的高度,第三個參數(shù)指定所有柱子的寬度,默認是0.8。grid()函數(shù)用于繪制網(wǎng)格,通過對參數(shù)的個性化設(shè)置,可以繪制出個性化的網(wǎng)格。10.6.4柱狀圖柱狀圖用每根柱子的長度表示值的大小,它們通常用來比較兩組或多data1=[107,115,145,212,280,338,350,358,368]data2=[190,260,310,380,410,500,510,580,600] years=np.arange(2000,2009,1) #創(chuàng)建數(shù)組plt.figure(figsize=(10,6))plt.bar(years,data2,label="大學(xué)錄取人數(shù)",color="b",width=0.3,alpha=0.3)forx,yinzip(years,data2):plt.text(x,y,y,ha="center",va="bottom")plt.bar(years+0.3,data1,label="大學(xué)畢業(yè)人數(shù)",color="g",width=0.3,alpha=0.6)plt.grid(color="r",linestyle="--",linewidth=1,axis="y",alpha=0.4) forx,zinzip(years+0.3,data1):plt.text(x,z,z,ha="center",va="bottom") plt.xlabel("年度")plt.ylabel("大學(xué)錄取/畢業(yè)人數(shù)(萬)")plt.title("中國大學(xué)錄取/畢業(yè)人數(shù)數(shù)據(jù)(2000年-2008年)")10.6.4柱狀圖data1=[107,115,145,212,280,310.6.4柱狀圖10.6.4柱狀圖10.6.5餅狀圖
餅狀圖是將各項的大小與各項總和的比例顯示在一張“餅”上,以“餅”的大小來確定每一項的占比。餅狀圖可以比較清楚地反映出部分與部分、部分與整體之間的比例關(guān)系,易于顯示每組數(shù)據(jù)相對于總數(shù)的大小,而且顯示方式比較直觀。
pyplot中繪制餅狀圖使用函數(shù)pie()。pie()中參數(shù)startangel設(shè)置開始角度,autopct設(shè)置數(shù)值顯示方式,radius設(shè)置半徑,默認為110.6.5餅狀圖餅狀圖是將各項的大小與各項總和的比fig=plt.figure(figsize=(8,3))ax1=fig.add_subplot(1,2,1) #定義子圖1plt.sca(ax1) #選擇子圖1plt.pie(data1,explode=explode1,labels=label1,autopct="%1.1f%%",startangle=45,radius=0.8)ax2=fig.add_subplot(1,2,2) #定義子圖2plt.sca(ax2) #選擇子圖2plt.pie(data2,explode=explode2,labels=label2,autopct="%1.1f%%",startangle=90)plt.show()10.6.5餅狀圖fig=plt.figure(figsize=(8,3)10.6.5餅狀圖10.6.5餅狀圖10.6.6散點圖
散點圖可以用來呈現(xiàn)數(shù)據(jù)點的分布,表現(xiàn)兩個元素之間的相關(guān)性。
scatter()函數(shù)可以用來繪制散點圖,傳入X和Y軸坐標數(shù)據(jù)即可。x=np.random.random(50) #產(chǎn)生50個0到1之間的隨機數(shù)y=x+np.random.random(50)/8 #模擬X和Y之間的相關(guān)性plt.scatter(x,y,s=x*300,c='r',marker='*') #參數(shù)s指定大小,c設(shè)置顏色,marker設(shè)置形狀plt.show()10.6.6散點圖散點圖可以用來呈現(xiàn)數(shù)據(jù)點的分布10.6.7箱線圖
箱線圖可以觀察最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)和最大值,它可以粗略地看出數(shù)據(jù)是否具有對稱性、分布的分散程度等信息,特別是可以對幾個樣本進行比較。
pyplot中繪制箱線圖的函數(shù)是boxplot()。boxplot()函數(shù)中參數(shù)notch設(shè)置中間箱體是否有缺口,labels指定箱線圖的標簽,meanline表示是否顯示均值線
data1=[107,115,145,212,280,338,350,358,368]data2=[900,260,310,380,410,500,510,580,600]label=["畢業(yè)人數(shù)","錄取人數(shù)"]plt.boxplot((data1,data2),notch=True,labels=label,meanline=True) 10.6.7箱線圖箱線圖可以觀察最小值、下四分位數(shù)、10.6.8三維繪圖
mpl_toolkits.mplot3d模塊在matplotlib基礎(chǔ)上提供了三維繪圖的功能,由于它使用matplotlib的二維繪圖功能來實現(xiàn)三維圖形的繪制工作,因此繪圖速度有限,不適合用于大規(guī)模的三維繪圖。如果讀者需要更加復(fù)雜的三維數(shù)據(jù)可視化功能,可以使用Mayavi。
10.6.8三維繪圖mpl_toolkits.mp10.7seaborn可視化10.710.7.1seaborn樣式seaborn預(yù)先設(shè)計好了5種主題樣式:darkgrid、dark、whitegrid、white和ticks,默認使用darkgrid主題樣式。searborn庫的set()方法可以設(shè)置主題、調(diào)色板等多個樣式。importseabornassns #導(dǎo)入seaborn擴展庫sns.set(style="whitegrid",palette="muted",color_codes=True) #set()中style參數(shù)設(shè)置主題,pal
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)副產(chǎn)品購銷示范合同
- 簽訂的門面租賃合同條款解析
- 建筑項目施工合同管理人員聘用合同
- 炒股合作經(jīng)典合同案例
- 車輛采購合同細則
- 國際物流服務(wù)合同專業(yè)版詳解
- 農(nóng)村土地流轉(zhuǎn)授權(quán)合同書
- 城市房屋拆遷補償安置標準合同樣本
- 鋼材買賣合同(示范文本GF-0155)
- 委托代理合同(普通1)
- 骶髂關(guān)節(jié)損傷郭倩課件
- 內(nèi)科學(xué)疾病概要-支氣管擴張課件
- 2025陜西渭南光明電力集團限公司招聘39人易考易錯模擬試題(共500題)試卷后附參考答案
- 教學(xué)課件-電力系統(tǒng)的MATLAB-SIMULINK仿真與應(yīng)用(王晶)
- 2024年南京旅游職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 《電商直播》 課件 項目一 走入電商直播
- 《中國宮腔鏡診斷與手術(shù)臨床實踐指南(2023版)》解讀課件
- 中藥學(xué)電子版教材
- GB/T 9535-1998地面用晶體硅光伏組件設(shè)計鑒定和定型
- 建筑公司項目部績效考核管理制度
- 中藥知識文庫:天麻形態(tài)學(xué)
評論
0/150
提交評論