Python程序設計課件 第九章 數(shù)據(jù)可視化_第1頁
Python程序設計課件 第九章 數(shù)據(jù)可視化_第2頁
Python程序設計課件 第九章 數(shù)據(jù)可視化_第3頁
Python程序設計課件 第九章 數(shù)據(jù)可視化_第4頁
Python程序設計課件 第九章 數(shù)據(jù)可視化_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章數(shù)據(jù)可視化

授課時間:***授課老師:***本章知識點導圖目錄9.1Matplotlib簡介 9.2Matplotlib繪圖基礎 9.3設置動態(tài)參數(shù) 9.4常用圖形的繪制 Matplotlib簡介 Matplotlib是基于NumPy的2D繪圖庫,是Python語言應用最廣的繪圖工具包之一。Matplotlib繪圖支持各種平臺,功能強大,簡單易用,僅需要幾行代碼,便可以生成直方圖、折線圖、條形圖、餅圖、散點圖、雷達等圖表。通過調(diào)節(jié)繪圖函數(shù)的參數(shù),可以簡單的實現(xiàn)圖形的定制,因而在科學計算領域得到了廣泛的應用,是計算結(jié)果可視化的重要工具。Matplotlib有多個子模塊,其中Pyplot子模塊主要用于數(shù)據(jù)圖形,是應用最廣的子模塊。因此,本書重點介紹Pyplot子模塊的應用。常用的導入Matplotlib及其pyplot模塊命令分別為:importmatplotlibasmplimportmatplotlib.pyplotasplt9.1

Matplotlib簡介9.1.1Matplotlib圖層結(jié)構(gòu)9.1.2顯示中文字體9.1.1Matplotlib圖層結(jié)構(gòu)使用Matplotlib繪制的圖形包含容器層、輔助顯示層和圖像層。繪圖時,必須按照這個順序來展示數(shù)據(jù),否則圖形不會正確顯示。9.1.1Matplotlib圖層結(jié)構(gòu)1.

容器層由Canvas對象(畫板)、Figure對象(畫布)、Axes對象(繪圖區(qū)和坐標系)組成。(1)Canvas是最底層系統(tǒng)層,相當于畫板,是放置畫布(Figure)的工具,Canvas對象無須用戶創(chuàng)建。(2)Figure在Canvas之上,相當于畫布,可以包含多個圖表,使用plt.figure()函數(shù)創(chuàng)建。(3)Axes位于Figure之上,指Figure中的單個圖表,一個Figure中可以有一個或多個Axes,即一張畫布中可以有一個或多個圖表。Axes對象充當畫布中繪圖區(qū)域的角色,它擁有獨立的坐標系,可以通過plt.subplots()函數(shù)來分割畫布,得到若干個坐標系/繪圖區(qū)。9.1.1Matplotlib圖層結(jié)構(gòu)2.輔助顯示層輔助顯示層是指Axes繪圖區(qū)域中除所繪圖形之外的,為圖形增加相關(guān)顯示和描述功能的輔助元素,主要包括x軸和y軸刻度、坐標軸標題、圖形標題、圖形網(wǎng)格線、圖例等。通過對該層的設置,可以提高圖形的可讀性,使圖像顯示更加直觀,更容易被用戶理解,但又不會對圖像本身產(chǎn)生實質(zhì)的影響。9.1.1Matplotlib圖層結(jié)構(gòu)3.圖像層圖像層指在Axes繪圖區(qū)內(nèi),使用繪圖函數(shù)繪制出的圖像,如折線圖、散點圖、餅圖等。圖像層和輔助顯示層所包含的內(nèi)容都位于Axes對象之上,都屬于圖表的元素。9.1.2顯示中文字體1.設置字體importmatplotlib.pyplotaspltplt.rcParams['font.family']='MicrosoftYaHei'plt.rcParams['font.sans-serif']=['MicrosoftYaHei']plt.rcParams['font.size']=16timMatplotlib是英文庫,默認不支持中文字符的顯示,無法正常顯示中文以及一些符號。為了在Matplotlib中正常顯示中文,需要人工修改Matplotlib的rc配置文件來設置Matplotlib支持的中文字體作為默認字體,代碼如下:rcParams表示rc配置文件參數(shù),參數(shù)font.family表示字體類型,font.sans-serif表示無襯線字體類型,font.size表示字體大小,“MicrosoftYaHei”為微軟雅黑字體9.1.2顯示中文字體2.中文字體及英文表示表9-1常用中英文字體的中英文對照中文字體名稱字體英文對照宋體SimSun黑體SimHei微軟雅黑MicrosoftYaHei仿宋FangSong楷體KaiTi隸書LiSu幼圓YouYuan華文細黑STXihei華文楷體STKaiti華文仿宋STFangsong宋體SimSun9.2Matplotlib繪圖基礎 9.2.1繪圖的基本步驟9.2.2創(chuàng)建畫布9.2.3添加畫布內(nèi)容9.2.4添加子圖9.2.5圖形的保存9.2.1繪圖基本步驟(1)導入庫(2)創(chuàng)建畫布對象figure:fig=plt.figure()(3)準備繪圖數(shù)據(jù),可以從文件讀取數(shù)據(jù),也可以使用函數(shù)生成的數(shù)據(jù)、或者通過計算得到的數(shù)據(jù)。(4)設置坐標軸的大小、刻度、坐標軸的上下限,也可以直接使用默認值。(5)調(diào)用繪圖函數(shù)繪制圖形。比如,plot(x,y)函數(shù)可以繪制折線圖,其中x為數(shù)據(jù)點的x軸坐標序列,y為數(shù)據(jù)點的y軸的坐標序列,還可以同時設置坐標軸刻度、線條的樣式、顏色等圖形參數(shù),也可以直接使用默認值。(6)添加圖形注釋,包含圖名、坐標名稱、圖例、文字說明等,也可以默認。(7)使用plt.show()顯示圖形。9.2.1繪圖基本步驟下面的代碼使用Matplotlib繪制簡單折線圖,運行結(jié)果圖如圖9-3所示。In[1]:importmatplotlib.pyplotasplt...:plt.rcParams['font.family']='MicrosoftYaHei'...:plt.rcParams['font.sans-serif']=['MicrosoftYaHei']...:fig=plt.figure()#創(chuàng)建畫布...:#定義繪圖數(shù)據(jù)...:x=[1,2,3,4,5,6,7,8,9]...:y=[4,8,9,7,8,12,23,24,30]...:plt.xlabel('x軸')#設置x軸名稱...:plt.ylabel('y軸')#設置y軸名稱...:plt.grid()#顯示網(wǎng)格線...:plt.title("plot函數(shù)繪制折線圖示例")#設置圖形標題...:plt.plot(x,y)#使用plot()函數(shù)繪制圖形...:plt.show()#顯示圖形圖9-3使用plot()繪制的折線圖示例9.2.2創(chuàng)建畫布畫布是一個Figure對象,使用figure()函數(shù)創(chuàng)建。Figure對象代表新的繪圖區(qū)域,并為當前的繪圖對象。plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,clear=False)num:Figure對象的編號,可選,默認由系統(tǒng)自動分配,如果當前num的Figure對象已經(jīng)存在,那么激活該Figure對象并引用,否則生成一個新的Figure對象。figsize:設置畫布的尺寸,以英寸為單位,默認值為(6.4,4.8)。dpi:設置圖像分辨率,默認值為100。facecolor:設置畫布背景顏色。edgecolor:設置畫布邊線顏色。clear:如果num代表的Figure畫布已經(jīng)存在,是否要將該畫布清空。9.2.2創(chuàng)建畫布【例9-1】創(chuàng)建一個尺寸為8×6的畫布,分辨率為100,背景色為灰色,邊框線為黑色。In[1]:importmatplotlib.pyplotasplt...:plt.figure(figsize=(4,3),dpi=100,facecolor='gray',edgecolor='white')#創(chuàng)建畫布...:plt.plot()...:plt.show()9.2.3添加畫布內(nèi)容為了增加繪制圖形的可讀性,可設置畫布的一些屬性,如標題、坐標軸標簽、坐標軸名稱、網(wǎng)格線、圖例等,還可以設置坐標軸的取值、坐標軸刻度等。需要注意的是,設置屬性和繪制圖形是沒有先后順序的,唯獨添加圖例(plt.legend())必須要在繪制圖形之后。9.2.3添加畫布內(nèi)容表9-3Pyplot子模塊繪制圖形常用屬性設置函數(shù)函數(shù)說明plt.title()設置標題,指定標題名稱、位置、顏色、字體大小等參數(shù)plt.grid()設置網(wǎng)格線,可以設置網(wǎng)格線的顏色、樣式、粗細等plt.text(x,y,s,fontdic)在坐標(x,y)處添加文本注釋plt.legend(array,loc)添加圖形圖例plt.xlabel()設置當前x軸標簽,可以指定位置、顏色、字體等參數(shù)plt.ylabel()設置當前y軸標簽,可以指定位置、顏色、字體等參數(shù)plt.xlim(xmin,xmax)設置當前x軸取值范圍plt.ylim(ymin,ymax)設置當前y軸取值范圍plt.xtick(ticks,labels)設置當前x軸刻度位置的標簽和取值plt.ytick(ticks,labels)設置當前y軸刻度位置的標簽和取值plt.xscale()設置x軸縮放plt.yscale()設置y軸縮放plt.autoscale()軸視圖自動縮放在表9-3的屬性設置函數(shù)中,均可以使用參數(shù)loc來指定位置,參數(shù)color來指定顏色,參數(shù)fontsize來指定字體大小。9.2.3添加畫布內(nèi)容b:是否顯示網(wǎng)格線,布爾值,可選參數(shù)。which:設置網(wǎng)格線顯示的尺度,可選參數(shù)

,可取值為'major'、'minor'或'both',其中'major'為主刻度、'minor'為次刻度,默認為'both',即主刻度和次刻度均顯示。axis:設置網(wǎng)格線顯示的軸,可選參數(shù),可取值為‘both’、‘x’或‘y’,默認為'both',表示x軸和y軸均顯示。linestyle:設置網(wǎng)格線的樣式,可取的樣式有'-'

、

'--'、

'-.'

':',默認為'-'

。linewidth:設置網(wǎng)格線寬度。plt.grid()函數(shù)常用參數(shù)的含義如下:9.2.3添加畫布內(nèi)容plt.legend()添加圖例函數(shù)中的loc參數(shù)有以下幾種取值:0:'best'(默認值)自動選擇最佳位置。1:'upperright'右上角。2:'upperleft'左上角。3:'lowerright'右下角。4:'lowerleft'左下角。5:'right'右側(cè)。6:'centerleft'左側(cè)中央。7:'centerright'右側(cè)中央。8:'lowercenter'底部中央。9:'uppercenter'頂部中央。10:'center'中央。9.2.3添加畫布內(nèi)容【例9-2】繪制身高年齡對照和身高體重對照的曲線圖形,并設置圖形的屬性。In[1]:importmatplotlib.pyplotasplt...:plt.figure()...:age=[1,2,3,4,5,6,7,8,9,10]...:height=[75.0,87.2,95.6,103.1,110.2,116.6,122.5,128.5,134.1,140.1]...:weight=[10.05,12.54,14.65,16.64,18.98,21.26,24.06,16.64,27.33,30.46]...:plt.title("年齡身高對照圖",loc="center",fontsize=16)...:plt.xlim(0,12)...:plt.ylim(0,160)...:plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12],fontsize=14)...:plt.yticks([20,40,60,80,100,120,140,160],fontsize=14)...:plt.xlabel("年齡(歲)",fontsize=14)...:plt.ylabel("身高(cm)/體重(kg)",fontsize=14)...:plt.grid(which='major')...:plt.plot(age,height)...:plt.plot(age,weight)...:plt.legend(["age-height",'age-weight'],fontsize=12,loc='upperleft')...:plt.show()9.2.4添加子圖在Matplotlib中,可以將畫布劃分成多個部分,在不同的部分添加子圖。表9-4創(chuàng)建子圖及子圖相關(guān)函數(shù)函數(shù)說明figure.add_subplot(nrows,ncols,plotnum)在全局繪圖區(qū)域中創(chuàng)建并選中一個子圖對象nrows:繪圖區(qū)域中子圖的行數(shù)ncols:繪圖區(qū)域中子圖的列數(shù)plotnum:當前子圖的編號plt.subplot(nrows,ncols,plotnum)與figure.add_subplot()類似,但使用subplot()會刪除畫板上已有的圖。plt.subplots(nrows,ncols)劃分畫布,創(chuàng)建一組子圖,將整個繪圖區(qū)劃分成nrows行、ncols列個子圖。plt.subplots_adjust(wspace=0,hspace=0)調(diào)整子圖之間的間距wspace:設置子圖之間空間的寬度量hspace:設置子圖之間空間的高度量使用figure.add_subplot(),plt.subplot(),plt.subplots()函數(shù)創(chuàng)建子圖,都會將全局繪圖區(qū)域分成nrows行ncols列個子圖,不同的是figure.add_subplot()和plt.subplot()函數(shù)一次只添加一個子圖,而plt.subplots()函數(shù)會同時創(chuàng)建多個子圖9.2.4添加子圖將全局繪圖區(qū)域分成nrows行ncols列個子圖后,會按照從左到右、從上至下的順序?qū)γ總€區(qū)域進行編號,左上的子繪圖區(qū)域編號為1,plotnum參數(shù)指定創(chuàng)建的子圖Axes對象所在的區(qū)域的編號。figure.add_subplot(2,3,4)和plt.subplot(2,3,4)也可以分別寫成figure.add_subplot(234)和plt.subplot(234)9.2.4添加子圖函數(shù)說明axes.plot()當前子圖區(qū)域繪制折線圖axes.legend()當前子圖添加圖形圖例axes.set_title()當前子圖添加圖形標題axes.set_xlabel()設置當前子圖x軸標簽axes.set_ylabel()設置當前子圖y軸標簽axes.set_xlim()設置當前子圖x軸取值范圍axes.set_xlim()設置當前子圖y軸取值范圍axes.set_xticks()設置當前子圖x刻度位置的標簽和取值axes.set_yticks()設置當前子圖y刻度位置的標簽和取值表9-5Pyplot子模塊繪制圖形常用屬性設置函數(shù)9.2.4添加子圖【例9-3】在同一張畫布上,創(chuàng)建2行2列的子圖,分別繪制sin(x)、cos(x)、sin(5x)、cos(5x)取值在[0,2

]區(qū)間的圖形。方法一:使用figure.add_subplot()函數(shù)In[1]:importmatplotlib.pyplotasplt...:importNumPyasnp...:x=np.linspace(0,2*np.pi,100)...:y1=np.sin(x)...:y2=np.cos(x)...:y3=np.sin(5*x)...:y4=np.cos(5*x)...:fig=plt.figure(figsize=(8,6))...:ax1=fig.add_subplot(2,2,1)...:ax1.set_title('sin(x)')#設置子圖標題...:ax1.plot(x,y1)...:ax2=fig.add_subplot(2,2,2)...:ax2.set_title('cos(x)')#設置子圖標題...:ax2.plot(x,y2)...:ax3=fig.add_subplot(2,2,3)...:ax3.set_title('sin(5x)')#設置子圖標題...:ax3.plot(x,y3)...:ax4=fig.add_subplot(2,2,4)...:ax4.set_title('cos(5x)')#設置子圖標題...:ax4.plot(x,y4)...:plt.show()9.2.4添加子圖方法二:使用plt.subplot()函數(shù)In[1]:importmatplotlib.pyplotasplt...:importNumPyasnp...:x=np.linspace(0,2*np.pi,100)...:y1=np.sin(x)...:y2=np.cos(x)...:y3=np.sin(5*x)...:y4=np.cos(5*x)...:fig=plt.figure(figsize=(8,6))...:ax1=plt.subplot(2,2,1)...:ax1.set_title('sin(x)')#設置子圖標題...:ax1.plot(x,y1)...:ax2=plt.subplot(2,2,2)...:ax2.set_title('cos(x)')#設置子圖標題...:ax2.plot(x,y2)...:ax3=plt.subplot(2,2,3)...:ax3.set_title('sin(5x)')#設置子圖標題...:ax3.plot(x,y3)...:ax4=plt.subplot(2,2,4)...:ax4.set_title('cos(5x)')#設置子圖標題...:ax4.plot(x,y4)...:plt.show()方法一和方法二運行結(jié)果一樣9.2.4添加子圖使用語句“fig,axes=plt.subplots(2,3)”,返回包含了已生成子圖Axes對象的NumPy數(shù)組。數(shù)組axes類似于二維數(shù)組進行索引,如axes[1,2]。

In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:fig,axes=plt.subplots(2,3,figsize=(8,6))...:x=np.arange(-2,2,0.01)...:n=1#n表示子圖編號...:foriinrange(2):...:forjinrange(3):...:axes[i,j].plot(x,np.power(x,n))...:titletext='x^'+str(n)#子圖標題文本...:axes[i,j].set_title(titletext)#設置子圖標題

...:n=n+1...:...:plt.subplots_adjust(wspace=0.3,hspace=0.3)9.2.5圖形的保存通常使用plt.savefig()函數(shù)保存繪制的圖形,同時可以設置圖形的分辨率、邊緣的顏色等參數(shù)savefig(fname,dpi,facecolor,edgecolor,format)filename:表示要保存的文件名或文件路徑的字符串,文件的擴展名可以是png、pdf等。dpi:圖像分辨率,默認為100。facecolor、edgecolor:子圖之外的圖形背景和邊框顏色,默認為白色。format:圖形輸出格式,支持的格式有pdf,png,jpeg,jpg,,svg,svgz,tif,tiff等。plt.savefig('x的n次冪對比圖.png',dpi=200,facecolor='gray')如將例9-4生成的圖片以文件名“x的n次冪對比圖”、分辨率為200、背景色為灰色保存到本地,代碼如下:9.3設置動態(tài)參數(shù)

在pyplot模塊中,可以使用rc配置文件來自定義圖形的各種屬性,稱之為rc配置或rc參數(shù)(rcParams)。主要包括線條寬度、顏色、樣式、坐標值標記的形狀、大小等,rc參數(shù)設置順序不分先后。表9-6線條和坐標值標記常用參數(shù)及其作用參數(shù)作用取值linestyle設置線條形狀“-”“--”“-.”“:”4種,默認為“-”linewidth設置線條寬度數(shù)值型數(shù)據(jù),默認為1.5color設置線條或數(shù)據(jù)點的顏色顏色英文名稱或英文簡稱或RGB色marker設置坐標值標記形狀“o”“.”“*”等20種,默認為Nonemarkersize設置標記的大小數(shù)值型數(shù)據(jù),默認為1markeredgewidth設置標記邊緣的寬度數(shù)值型數(shù)據(jù),默認1.5markeredgecolor設置標記邊緣的顏色顏色英文名稱或英文簡稱或RGB色markerfacecolor設置標記內(nèi)部的顏色顏色英文名稱或英文簡稱或RGB色9.3設置動態(tài)參數(shù)

表9-7linestyle線條樣式參數(shù)的取值及含義linestyle參數(shù)取值含義linestyle參數(shù)取值含義"-"或"solid"實線"-."或"dashdot"點劃線"--"或"dashed"虛線":"或"dotted"虛線9.3設置動態(tài)參數(shù)

marker坐標值標記形狀通常在繪制直線、曲線圖函數(shù)plot()、散點圖函數(shù)scatte()和誤差圖函數(shù)errorbar()上應用,Matplotlib.pyplot提供多達40個marker標記的樣式供選擇,圖表中常用的取值及標記說明見表9-8。表9-8marker坐標值標記形狀參數(shù)的取值標記屬性值標記說明標記屬性值標記說明"o"圓圈"H"或"h"六邊形"."圓點"8"八邊形"*"星號"∨"倒三角"+"加號"∧"正三角"x"X"<"左三角"_"水平線">"右三角"|"豎線"1"向下Y"s"正方形"2"向上Y"D"或"D"菱形"3"向左Y"p"五邊行"4"向右Y9.3設置動態(tài)參數(shù)

color顏色參數(shù)常用的顏色取值見表9-9。表9-9顏色參數(shù)常用的顏色取值color參數(shù)取值顏色說明color參數(shù)取值顏色說明"b"或"blue"藍色"m"或"magenta"品紅"g"或"green"綠色"y"或"yellow"黃色"r"或"red"紅色"k"或"black"黑色"c"或"cyan"藍綠色"w"或"white"白色除了設置線條、坐標值標記的rc參數(shù)外,還可以設置文本、散點圖、坐標軸標簽、圖例、圖片、圖像保存等rc參數(shù)。9.3設置動態(tài)參數(shù)

設置rc參數(shù)主要有以下三種方法:方法1:使用rcParams設置plt.rcParams['lines.linestyle']='-.'plt.rcParams['lines.color']='g'plt.rcParams['lines.marker']='D'方法2:繪圖函數(shù)內(nèi)設置plt.plot(x,y,color='red',linestyle='--',linewidth=2,marker='*',markersize=10)方法3:繪圖函數(shù)內(nèi)簡化設置,將取值為符號類型的參數(shù)放在一個字符串內(nèi),不分先后順序,數(shù)值類型的參數(shù)分別單獨設置plt.plot(x,y,'r*--',linewidth=2,markersize=15)9.3設置動態(tài)參數(shù)

方法1:使用rcParams設置In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:#定義數(shù)據(jù)...:t=np.arange(0,np.pi,0.1)...:x=np.sin(3*t)*np.cos(t)...:y=np.sin(3*t)*np.sin(t)...:#設置線條和數(shù)值標記的rc參數(shù)...:plt.rcParams['lines.linestyle']='--'...:plt.rcParams['lines.linewidth']=2...:plt.rcParams['lines.marker']='*'...:plt.rcParams['lines.markersize']='15'...:plt.plot(x,y)...:plt.show()9.3設置動態(tài)參數(shù)

方法2:繪圖函數(shù)內(nèi)設置In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:#定義數(shù)據(jù)...:t=np.arange(0,np.pi,0.1)...:x=np.sin(3*t)*np.cos(t)...:y=np.sin(3*t)*np.sin(t)...:#繪圖,并設置rc參數(shù)...:plt.plot(x,y,linewidth=2,linestyle='--',markersize=15,marker='*')...:plt.show()9.3設置動態(tài)參數(shù)

方法3:繪圖函數(shù)內(nèi)簡化設置In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:t=np.arange(0,np.pi,0.1)...:x=np.sin(3*t)*np.cos(t)...:y=np.sin(3*t)*np.sin(t)...:#繪圖,并設置rc參數(shù)...:plt.plot(x,y,'*--',linewidth=2,markersize=15)...:plt.show()9.4常用圖形的繪制

9.4.1繪制折線圖9.4.2繪制條形圖9.4.3繪制直方圖9.4.4繪制散點圖9.4.5繪制餅圖9.4.6繪制箱線圖9.4.1繪制折線圖使用plt.plot()函數(shù)繪制折線圖和各種數(shù)學函數(shù)圖形,其常用參數(shù)見表9-10。表9-10plt.plot()函數(shù)常用參數(shù)參數(shù)名稱作用取值x,yX軸和Y軸對應的數(shù)據(jù)接收列表類型數(shù)據(jù)linestyle線條樣式取值見表9-7linewidth線條寬度數(shù)值型數(shù)據(jù),默認為1.5color線條顏色常用顏色取值見表9-9marker坐標值標記形狀,取值見表9-8markersize設置標記大小數(shù)值型數(shù)據(jù),默認為1markeredgewidth設置標記邊緣寬度數(shù)值型數(shù)據(jù),默認1.5markeredgecolor設置標記邊緣顏色常用顏色取值見表9-9markerfacecolor設置標記內(nèi)部顏色常用顏色取值見表9-9alpha設置標記的透明度0~1的浮點數(shù)9.4.1繪制折線圖【例9-6】表是A、B兩個地區(qū)1~12月的降雨量,請根據(jù)數(shù)據(jù)繪制降雨量對比折線圖。月份地區(qū)123456789101112A9.62.932.81330.666.157.734.132.930.82.62.9B51.772.295.881.529.99977.7114.216.990.54617.9In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:plt.figure(figsize=(8,5))...:x=np.arange(1,13,1)...:yA=[9.6,2.9,32.8,13,30.6,66.1,57.7,34.1,32.9,0.8,2.6,2.9]...:yB=[51.7,72.2,95.8,81.5,29.9,99,77.7,114.2,16.9,90.5,46,17.9]...:plt.plot(x,yA,'r-.o',markersize=10)#繪制折線圖...:plt.plot(x,yB,'b-*',markersize=10)#繪制折線圖...:plt.title("A、B兩區(qū)降雨量對比圖")...:plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12])...:plt.xlabel("月份")...:plt.ylabel("降雨量",)...:plt.legend(['A區(qū)','B區(qū)'],loc='upperright')...:plt.show()9.4.2繪制條形圖形圖(BarChart)也稱柱狀圖,是一種以長方形的長度為變量的統(tǒng)計圖。根據(jù)條形圖中長方形的長度,能夠一眼看出各個數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別,通常用于較小的數(shù)據(jù)集的分析。按照排列方式的不同,可分為縱式條形圖和橫式條形圖。使用plt.bar()函數(shù)繪制縱向條形圖,其常用的參數(shù)見表9-12。表9-12plt.bar()函數(shù)常用參數(shù)參數(shù)名稱作用取值xX軸坐標接收列表類型數(shù)據(jù)height條形高度數(shù)值型數(shù)據(jù)width條形寬度0~1的浮點數(shù),默認0.8botton條形的起始位置也是y軸的起始坐標align條形的中心位置“center”,"lege"邊緣color條形的顏色常用顏色取值見表9-9edgecolor邊框的顏色常用顏色取值見表9-9tick_label下標的標簽元組或列表類型的字符組合orientation設置條形方向豎直:"vertical",水平:"horizontal,默認為豎直可以設置orientation="horizontal",并將width與height參數(shù)的數(shù)據(jù)交換也可以使用plt.barh()函數(shù),繪制水平方向的條形圖。9.4.2繪制條形圖【例9-7】表中A~G7個店鋪某商品的目標銷售額和實際銷售額數(shù)據(jù)。請根據(jù)表中數(shù)據(jù)繪制目標銷售額和實際銷售額的對比條形圖。店鋪名地區(qū)A店鋪B店鋪C店鋪D店鋪E店鋪F店鋪G店鋪銷售額目標40385030403053實際銷售額36424832363158n[1]:importmatplotlib.pyplotasplt...:importNumPyasnp...:x=np.arange(1,8,1)...:target=[40,38,50,30,40,30,53]...:asales=[36,42,48,32,36,31,58]...:shopname=['A店鋪','B店鋪','C店鋪','D店鋪','E店鋪','F店鋪','G店鋪']...:plt.figure()...:bar_width=0.3#條形寬度...:plt.bar(x,height=target,width=bar_width,color='r')#繪制條形圖...:plt.bar(x+0.35,height=asales,width=bar_width,color='y')...:plt.title('各店鋪銷售目標與實際銷售額對比圖')...:plt.xlabel('店鋪')...:plt.ylabel('銷售額')...:plt.xticks(np.arange(1,8,1),shopname)...:plt.yticks(np.arange(10,90,10))...:plt.ylim(0,80)...:plt.legend(['目標銷售額','實際銷售額'])...:plt.show()9.4.3繪制直方圖直方圖(Histogram)也稱質(zhì)量分布圖,一般用橫軸表示數(shù)據(jù)范圍,縱軸表示分布情況,使用plt.hist()函數(shù)繪制縱向直方圖,其常用的參數(shù)見表9-14。表9-14plt.hist()函數(shù)常用參數(shù)參數(shù)名稱作用取值x繪圖數(shù)據(jù)接收列表類型數(shù)據(jù)bins直方圖的柱數(shù)整數(shù)、列表或一維數(shù)組等,默認為10。若設置為一個整數(shù),則根據(jù)繪圖數(shù)據(jù)自動劃分;若設置為列表或一維數(shù)組,則根據(jù)其中的數(shù)據(jù)劃分facecolor直方圖顏色常用顏色取值見表9-9edgecolor直方圖邊框顏色常用顏色取值見表9-9histtype直方圖類型‘bar’,‘barstacked’,‘step’,‘stepfilled’rwidth條形寬度浮點數(shù)alpha透明度0~1的浮點數(shù)9.4.3繪制直方圖【例9-8】下面是某課程43名學生的考試分數(shù),請根據(jù)考試分數(shù)繪制各成績段人數(shù)分布直方圖。78,70,69,88,88,73,81,91,96,79,78,67,79,82,86,67,95,64,84,85,76,64,75,69,86,90,98,78,85,87,90,86,75,85,63,79In[1]:importmatplotlib.mlabasmlab...:importnumpyasnp...:importmatplotlib.pyplotasplt...:partition=[0,10,20,30,40,50,60,70,80,90,100]#劃分成績段...:ages=[78,70,55,88,68,73,81,91,96,79,78,67,69,82,86,67,95,64,84,85,76,58,75,69,86,90,98,78,85,77,90,76,75,85,63,79]...:plt.hist(ages,bins=partition,facecolor='yellow',edgecolor='b')#繪制直方圖...:plt.title('各分數(shù)段人數(shù)分布直方圖')...:plt.xticks(np.arange(0,120,10))...:plt.xlabel('分數(shù)')...:plt.ylabel('人數(shù)')...:plt.show()9.4.4繪制散點圖使用plt.scatter()函數(shù)繪制散點圖,其常用的參數(shù)見表9-15。表9-15plt.scatter()函數(shù)常用參數(shù)參數(shù)名稱作用取值x,yX軸和Y軸對應的數(shù)據(jù)接收列表類型數(shù)據(jù)s設置點的大小整數(shù)、列表或一維數(shù)組等,默認為10。若設置為一個整數(shù),則表示所有點的大??;若傳入列表或一維數(shù)組則表示每個點的大小color設置點的顏色顏色取值(見表9-9),可以是列表或一維數(shù)組等。若設置為一個顏色,則表示所有點顏色相同;若傳入列表或一維數(shù)組則表示每個點的顏色。marker設置點的形狀取值見表9-8alpha設置點的透明度0~1的浮點數(shù)9.4.4繪制散點圖【例9-9】生成500個均值為100、標準差為30的隨機點坐標,并根據(jù)點坐標數(shù)據(jù)繪制散點圖。In[1]:importmatplotlib.pyplotasplt...:importnumpyasnp...:plt.figure(figsize=(8,6),dpi=100)...:#數(shù)據(jù)準備...:mu=100#均值...:sigma=30#標準差...:x=mu+sigma*(np.random.randn(500))#生成均值為mu,標準差為sigma,服從正態(tài)分布的隨機數(shù)...:y=mu+sigma*(np.random.randn(500))...:plt.scatter(x,y,color='r',marker='o',s=80,alpha=0.4)#繪制散點圖...:plt.grid()...:plt.show()9.4.5繪制餅圖餅圖(PieGraph)也稱為圓餅圖,使用一整個圓餅代表數(shù)據(jù)的總量,使用plt.pie()函數(shù)繪制餅圖,其常用的參數(shù)見表9-16。表9-16plt.pie()函數(shù)常用參數(shù)參數(shù)名稱作用取值x用于繪制餅圖的數(shù)據(jù)接收列表類型數(shù)據(jù)explode設置餅圖的半徑浮點數(shù),默認為1labels指定餅圖外側(cè)顯示的文字接收列表類型數(shù)據(jù)radius設置餅圖半徑浮點數(shù)pctdistance設置百分比標簽與圓心的距離,為圓半徑的倍數(shù)浮點數(shù),默認為0.6textprops設置餅圖中文本的屬性

autopct自動添加百分比顯示格式化方法顯示百分比,如'%.2f%%',保留兩位小數(shù)labeldistance設置每一項的名稱與圓心的距離,為圓半徑的倍數(shù)浮點數(shù)9.4.5繪制餅圖【例9-10】表中是某醫(yī)院12月份各科室門診每日10:00實時流量檢測數(shù)據(jù)的總和(單位:人次)。請根據(jù)表中數(shù)據(jù)繪制每個科室人流量占比的餅圖。科室內(nèi)科兒科保健科外科婦科急癥科其它人數(shù)3112295216441931146814203431In[1]:importnumpyasnp...:importmatplotlib.pyplotasplt...:fig=plt.figure(figsize=(8,6))...:data=[3112,2952,1644,1931,1468,1420,3431]#繪圖數(shù)據(jù)...:labels=['內(nèi)科','兒科','保健科','外科','婦科','急診科','其它']...:epd=(0.2,0.05,0.05,0.05,0.05,0.05,0.05)...:plt.pie(x=data,labels=labels,...:explode=epd,radius=1.5,...:autopct='%.2f%%',...:textprops={'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論