第6章 可視化繪圖-Matplotlib_第1頁
第6章 可視化繪圖-Matplotlib_第2頁
第6章 可視化繪圖-Matplotlib_第3頁
第6章 可視化繪圖-Matplotlib_第4頁
第6章 可視化繪圖-Matplotlib_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章可視化繪圖—MatplotlibMatplotlib的安裝Matplotlib的繪制流程Matplotlib基礎(chǔ)圖表的繪制Matplotlib高級(jí)圖表實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化實(shí)戰(zhàn)2:餐廳小費(fèi)贈(zèng)予情況數(shù)據(jù)可視化掌握Matplotlib繪制圖表的流程及方法。掌握Matplotlib繪制散點(diǎn)圖的方法。掌握Matplotlib繪制直方圖的方法。掌握Matplotlib繪制折線圖的方法。掌握Matplotlib繪制餅圖的方法。掌握Matplotlib繪制箱型圖的方法。掌握Matplotlib繪制正弦圖和余弦圖的方法。掌握Matplotlib繪制誤差條形圖的方法。掌握Matplotlib繪制玫瑰圖的方法。掌握Matplotlib繪制詞云的方法。6.1Matplotlib的安裝6.1Matplotlib的安裝安裝Matplotlib的方式有很多種。這里使用Anaconda發(fā)行版安裝Matplotlib。在“開始”菜單欄AnacondaPrompt中輸入如下代碼即可安裝。condainstallMatplotlib6.2Matplotlib的繪制流程繪圖結(jié)構(gòu)——Figure、Axes、Axis、Artist繪圖流程第一個(gè)交互式圖表其他常用操作6.2Matplotlib的繪制流程6.2.1繪圖結(jié)構(gòu)——Figure、Axes、Axis、ArtistMatplotlib中的所有內(nèi)容都是按層次結(jié)構(gòu)組織的。層次結(jié)構(gòu)的頂部是matplotlib.pyplot模塊提供的Matplotlib“狀態(tài)機(jī)環(huán)境”。在此級(jí)別,使用簡(jiǎn)單函數(shù)將繪圖元素(線條、圖像、文本等)添加到當(dāng)前圖形中的當(dāng)前軸。層次結(jié)構(gòu)的下一層是面向?qū)ο蠼涌诘牡谝粚?,其中pyplot僅用于少數(shù)功能,例如圖形創(chuàng)建,用戶顯式創(chuàng)建并跟蹤圖形和軸對(duì)象。在這一層,用戶使用pyplot創(chuàng)建圖形,通過這些圖形,可以創(chuàng)建一個(gè)或多個(gè)軸對(duì)象。這些坐標(biāo)區(qū)對(duì)象隨后用于大多數(shù)繪圖操作。6.2Matplotlib的繪制流程6.2.1繪圖結(jié)構(gòu)——Figure、Axes、Axis、ArtistFigure,圖層標(biāo)記為最外部的紅框,可以理解為畫布。所有的內(nèi)容都會(huì)畫在這個(gè)“畫板”上,F(xiàn)igure會(huì)包含所有的子坐標(biāo)軸。6.2Matplotlib的繪制流程6.2.1繪圖結(jié)構(gòu)——Figure、Axes、Axis、ArtistAxes,在圖中標(biāo)記為藍(lán)色的內(nèi)框,是一套坐標(biāo)軸的組合,可以理解為一個(gè)坐標(biāo)系。Axes在英文里是Axis的復(fù)數(shù)形式,也就是說axes代表的其實(shí)是figure當(dāng)中的一套坐標(biāo)軸。之所以說一套而不是兩條坐標(biāo)軸,是因?yàn)槿绻嬋S的圖,axes就代表3條坐標(biāo)軸了。所以,在一個(gè)figure當(dāng)中,每添加一次subplot,其實(shí)就是添加了一套坐標(biāo)軸,也就是添加了一個(gè)axes,放在二維坐標(biāo)里就是添加了兩條坐標(biāo)軸,分別是x軸和y軸。6.2Matplotlib的繪制流程6.2.1繪圖結(jié)構(gòu)——Figure、Axes、Axis、ArtistAxis,在圖中標(biāo)記為綠色的坐標(biāo)軸,其包含刻度和標(biāo)簽。6.2Matplotlib的繪制流程6.2.1繪圖結(jié)構(gòu)——Figure、Axes、Axis、ArtistArtist,所有的繪圖元素的基類,包含所有在figure中可以被看到的都是一個(gè)artist。當(dāng)一個(gè)figure被渲染的時(shí)候,所有的artists都被畫在畫布canvas上。大多數(shù)的artist都是和某個(gè)axes綁定的,這些artist不能同時(shí)屬于多個(gè)axes。6.2Matplotlib的繪制流程6.2.2繪圖流程①創(chuàng)建畫板:fig=plt.figure(),后面還可以跟著對(duì)畫板的各種處理。②創(chuàng)建子圖:axis=fig.subplot(),一次創(chuàng)建多張子圖,axes是一個(gè)數(shù)組。③面向?qū)ο笫嚼L圖,創(chuàng)建圖形與圖例。顯示圖片或者保存圖片。6.2Matplotlib的繪制流程6.2.3第一個(gè)交互式圖表首先導(dǎo)入pyplot模塊,將其命名為plt。然后創(chuàng)建一個(gè)畫布。importmatplotlib.pyplotasplt#導(dǎo)入模塊fig=plt.figure(figsize=(8,7))#創(chuàng)建畫布<Figuresize576x504with0Axes>6.2Matplotlib的繪制流程6.2.3第一個(gè)交互式圖表一般使用add_subplot()函數(shù)添加子圖,其有四種簽名形式。importmatplotlib.pyplotasplt#導(dǎo)入模塊importnumpyasnpfromnumpy.randomimportrandnfig=plt.figure(figsize=(8,7))#創(chuàng)建畫布ax1=fig.add_subplot(1,1,1)#使用ax1變量指向子圖對(duì)象ax1.hist(randn(50))#使用軸向圖的方法創(chuàng)建子圖6.2Matplotlib的繪制流程6.2.3第一個(gè)交互式圖表開發(fā)者需要對(duì)坐標(biāo)軸上的標(biāo)簽進(jìn)行規(guī)定,通常使用xlabel()函數(shù)與ylabel()函數(shù)進(jìn)行此操作importmatplotlib.pyplotasplt#導(dǎo)入模塊importnumpyasnpfromnumpy.randomimportrandnfig=plt.figure(figsize=(8,7))#創(chuàng)建畫布ax1=fig.add_subplot(1,1,1)#使用ax1變量指向子圖對(duì)象ax1.hist(randn(50))#使用軸向圖的方法創(chuàng)建子圖plt.rcParams['font.family']=['sans-serif']plt.rcParams['font.sans-serif']=['SimHei']#解決中文顯示亂碼問題(視實(shí)際情況而定是否添加此代碼)plt.xlabel("x軸")plt.ylabel("y軸")6.2Matplotlib的繪制流程6.2.3第一個(gè)交互式圖表在添加了坐標(biāo)軸標(biāo)簽之后,還可以使用legend()函數(shù)添加圖例importmatplotlib.pyplotasplt#導(dǎo)入模塊importnumpyasnpfromnumpy.randomimportrandnfig=plt.figure(figsize=(8,7))#創(chuàng)建畫布ax1=fig.add_subplot(1,1,1)#使用ax1變量指向子圖對(duì)象ax1.hist(randn(50))#使用軸向圖的方法創(chuàng)建子圖plt.rcParams['font.family']=['sans-serif']plt.rcParams['font.sans-serif']=['SimHei']plt.xlabel("x軸")plt.ylabel("y軸")plt.legend(['數(shù)據(jù)'])#添加圖例plt.show()#顯示圖表6.2Matplotlib的繪制流程6.2.4其他常用操作設(shè)置坐標(biāo)軸的長(zhǎng)度和范圍importnumpyasnpfig=plt.figure()#添加繪圖區(qū)域a1=fig.add_axes([0,0,1,1])#準(zhǔn)備數(shù)據(jù)x=np.arange(1,10)#繪制函數(shù)圖像a1.plot(x,np.exp(x))#添加題目a1.set_title('示例')plt.show()6.2Matplotlib的繪制流程6.2.4其他常用操作設(shè)置坐標(biāo)軸的長(zhǎng)度和范圍importmatplotlib.pyplotaspltimportnumpyasnpfig=plt.figure()a1=fig.add_axes([0,0,1,1])x=np.arange(1,10)a1.plot(x,np.exp(x),'r')a1.set_title('示例')#設(shè)置y軸a1.set_ylim(0,1000)#設(shè)置x軸a1.set_xlim(0,20)plt.show()6.2Matplotlib的繪制流程6.2.4其他常用操作設(shè)置圖表的線形、屬性importmatplotlib.pyplotaspltimportnumpyasnpy=np.arange(1,5)print(y)plt.plot(y,c='g',marker='o')#圓形標(biāo)記plt.plot(y+1,c='0.5',marker='D')#菱形標(biāo)記plt.plot(y+2,marker='^')#正三角標(biāo)記plt.plot(y+3,'p')#五邊形標(biāo)記plt.show()6.2Matplotlib的繪制流程6.2.4其他常用操作設(shè)置圖表刻度和網(wǎng)格importnumpyasnpimportmatplotlib.pyplotaspltx=np.array([1,2,3,4])y=np.array([1,4,9,16])plt.title("網(wǎng)格線圖表")plt.xlabel("x軸")plt.ylabel("y軸")plt.plot(x,y)plt.grid()#網(wǎng)格plt.show()6.2Matplotlib的繪制流程6.2.4其他常用操作改變網(wǎng)格線線條的形狀importnumpyasnpimportmatplotlib.pyplotaspltx=np.array([1,2,3,4])y=np.array([1,4,9,16])plt.title("網(wǎng)格線圖表")plt.xlabel("x軸")plt.ylabel("y軸")plt.plot(x,y)plt.grid(color='r',linestyle='-.',linewidth=0.5)plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制散點(diǎn)圖的繪制直方圖的繪制折線圖的繪制餅圖的繪制箱線圖的繪制正弦圖和余弦圖的繪制誤差條形圖的繪制玫瑰圖的繪制詞云的繪制6.3Matplotlib基礎(chǔ)圖表的繪制6.3.1散點(diǎn)圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('penguins_size.csv')ax1=plt.figure(figsize=(8,7))plt.scatter(x=data.flipper_length_mm,y=data.body_mass_g)plt.xlabel('腳掌長(zhǎng)度/mm')plt.ylabel('體重/g')plt.legend(['節(jié)點(diǎn)'])plt.title('帕爾默企鵝腳掌長(zhǎng)度與體重關(guān)系圖')plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.2直方圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('penguins_size.csv')ax1=plt.figure(figsize=(8,7))plt.hist(data['flipper_length_mm'],align='left')plt.xlabel('腳掌長(zhǎng)度/mm')plt.ylabel('數(shù)量/只')plt.legend(['數(shù)量'])plt.title('帕爾默企鵝腳掌長(zhǎng)度基本情況')plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.2直方圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('penguins_size.csv')ax1=plt.figure(figsize=(8,7))plt.hist(data['body_mass_g'],align='left')plt.xlabel('體重/g')plt.ylabel('數(shù)量/只')plt.legend(['數(shù)量'])plt.title('帕爾默企鵝體重分布基本情況')plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.3折線圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('人口.csv',encoding='gbk')x=data.年份y=data.人口plt.title("1949年-2021年全國人口情況")plt.xlabel("年份")plt.ylabel("人口(人)")plt.plot(x,y)plt.grid(color='r',linestyle='-.',linewidth=0.5)plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.3折線圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspdplt.figure(figsize=(12,7))data=pd.read_csv('人口.csv',encoding='gbk')x=data.年份y1=data.男性y2=data.女性plt.title("1949年-2021年全國人口情況")plt.xlabel("年份")plt.ylabel("比例/%")plt.plot(x,y1)plt.plot(x,y2,'r')plt.legend(['男性','女性'])plt.grid(color='r',linestyle='-.',linewidth=0.5)plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.4餅圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('news.csv')x=data['count']plt.pie(x,labels=['sport','tech','business','entertainment','politics'],autopct="%1.1f%%")plt.title("新聞播報(bào)種類比例")plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.4餅圖的繪制importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspdplt.rcParams['font.sans-serif']=['SimHei']#顯示中文matplotlib.rcParams['axes.unicode_minus']=Falsedata=pd.read_csv('news.csv')x=data['count']explode=[0,0,0,0.3,0]colors=['yellow','green','red','blue','pink']plt.pie(x,labels=['sport','tech','business','entertainment','politics'],colors=colors,explode=explode,autopct="%1.1f%%")plt.title("新聞播報(bào)種類比例")plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.5箱線圖的繪制箱線圖能顯示出一組數(shù)據(jù)的最大值、最小值、中位數(shù)及上下四分位數(shù)。在箱線圖中,從上四分位數(shù)到下四分位數(shù)繪制一個(gè)盒子,然后用一條垂直觸須(形象地稱為“盒須”)穿過盒子的中間。上垂線延伸至上邊緣(最大值),下垂線延伸至下邊緣(最小值)。箱線圖結(jié)構(gòu)如右圖所示。一般使用boxplot()函數(shù)來繪制箱線圖。其具體代碼如下所示。matplotlib.pyplot.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None,manage_ticks=True,autorange=False,zorder=None,*,data=None)6.3Matplotlib基礎(chǔ)圖表的繪制6.3.5箱線圖的繪制importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlibplt.figure(figsize=(10,10))#創(chuàng)建畫布plt.rcParams['font.sans-serif']=['SimHei']#顯示中文matplotlib.rcParams['axes.unicode_minus']=False#正常顯示負(fù)號(hào)np.random.seed(19900108)#固定隨機(jī)生成的隨機(jī)數(shù)data_1=np.random.normal(100,10,200)data_2=np.random.normal(70,30,200)data_3=np.random.normal(80,20,200)#生成三組隨機(jī)數(shù),每組包含正態(tài)分布的平均值、標(biāo)準(zhǔn)差以及期望值data=[data_1,data_2,data_3]#將生成的隨機(jī)數(shù)放到數(shù)組中plt.boxplot(data)#創(chuàng)建箱線圖plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.6正弦圖和余弦圖的繪制importmatplotlib.pyplotaspltimportnumpyasnpplt.rcParams['font.family']=['sans-serif']plt.rcParams['font.sans-serif']=['SimHei']#中文顯示x1=np.linspace(0,2*np.pi,50)#獲取x坐標(biāo)y1=np.sin(x1)y2=np.cos(x1)#獲取y坐標(biāo)plt.figure()plt.plot(x1,y1,'r',linestyle='-')plt.plot(x1,y2,'b',linestyle='-.')plt.xlabel('X軸')plt.ylabel('Y軸')plt.title('正弦圖和余弦圖')labels=['sin(x)','cos(x)']#圖例plt.legend(labels,loc='upperleft')plt.grid(color='y',linestyle='-.',linewidth=0.5)plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.7誤差條形圖的繪制importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']x=np.arange(5)y=[91,76,89,120,82]#實(shí)際數(shù)據(jù)err=[3,6,10,2,5]#誤差err_attr={"elinewidth":2,"ecolor":"black","capsize":3}#誤差棒的樣式plt.bar(x,y,color="g",width=0.6,yerr=err,error_kw=err_attr,tick_label=list("12345"))#繪制誤差條形圖plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.7玫瑰圖的繪制importmatplotlib.pyplotaspltnp.random.seed(19680801)#固定隨機(jī)數(shù)N=6#玫瑰花瓣個(gè)數(shù)theta=np.linspace(0.0,2*np.pi,N,endpoint=False)#角度length=[96,121,100,111,102,81]#長(zhǎng)度width=[0.5,0.5,0.5,0.5,0.5,0.5]#寬度fig=plt.figure(figsize=(12,8))plt.subplot(111,projection='polar')#極坐標(biāo)必須這樣寫bars=plt.bar(theta,length,width=width,color='purple',bottom=0.0)#條形圖繪制plt.title('玫瑰圖')plt.show()6.3Matplotlib基礎(chǔ)圖表的繪制6.3.8詞云的繪制importjiebafromwordcloudimportWordCloudtxt='數(shù)據(jù)分析師,是不同行業(yè)中,專門從事行業(yè)數(shù)據(jù)搜集、整理、分析,并依據(jù)數(shù)據(jù)做出行業(yè)研究、評(píng)估和預(yù)測(cè)的專業(yè)人員。'words=jieba.lcut(txt)#精確分詞newtxt=''.join(words)#空格拼接wordcloud=WordCloud(font_path="msyh.ttc").generate(newtxt)wordcloud.to_file('中文詞云圖1.jpg')6.4Matplotlib高級(jí)圖表等值線圖風(fēng)桿圖多序列條狀圖多序列堆積條狀圖多面板圖6.4Matplotlib高級(jí)圖表6.4.1等值線圖等值線圖又稱等量線圖,是以相等數(shù)值點(diǎn)的連線表示連續(xù)分布且逐漸變化的數(shù)量特征的一種圖型,如下圖所示。6.4Matplotlib高級(jí)圖表6.4.1等值線圖importmatplotlib.pyplotaspltimportnumpyasnpdx=0.01dy=0.01x=np.arange(-2.0,2.0,dx)#設(shè)置橫向數(shù)據(jù)y=np.arange(-2.0,2.0,dy)#設(shè)置縱向數(shù)據(jù)X,Y=np.meshgrid(x,y)deff(x,y):return(1-y**5+x**5)*np.exp(x**2-y*+2)#設(shè)置數(shù)據(jù)函數(shù)C=plt.contour(X,Y,f(X,Y),8,colors='black')#繪制等值線圖plt.contourf(X,Y,f(X,Y),8)plt.clabel(C,inline=1,fontsize=10)plt.show()6.4Matplotlib高級(jí)圖表6.4.1等值線圖importmatplotlib.pyplotaspltimportnumpyasnpdx=0.01dy=0.01x=np.arange(-2.0,2.0,dx)y=np.arange(-2.0,2.0,dy)X,Y=np.meshgrid(x,y)deff(x,y):return(1-y**5+x**5)*np.exp(-x**2-y*+2)C=plt.contour(X,Y,f(X,Y),8,colors='white')plt.contourf(X,Y,f(X,Y),8)plt.clabel(C,inline=1,fontsize=10)plt.colorbar()#添加圖例說明plt.show()6.4Matplotlib高級(jí)圖表6.4.2風(fēng)桿圖風(fēng)桿是風(fēng)速和風(fēng)向的一種表現(xiàn)形式,主要由氣象學(xué)家使用。理論上講,風(fēng)桿圖可以被用來可視化任何類型的二維向量。風(fēng)桿圖和箭頭類似,但不同的是通過箭頭的長(zhǎng)度表示向量的大小,而風(fēng)桿通過把直線或者三角形作為大小增量提供了更多關(guān)于向量大小的信息,如下圖所示。6.4Matplotlib高級(jí)圖表6.4.2風(fēng)桿圖importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-20,20,8)#設(shè)置橫向風(fēng)向y=np.linspace(0,20,8)#設(shè)置縱向風(fēng)向X,Y=np.meshgrid(x,y)U,V=X+25,Y-35plt.subplot(1,2,1)plt.barbs(X,Y,U,V,flagcolor='green',alpha=0.75)plt.grid(True,color='gray')plt.subplot(1,2,2)#設(shè)置風(fēng)力plt.quiver(X,Y,U,V,facecolor='red',alpha=0.75)plt.grid(True,color='grey')plt.show()6.4Matplotlib高級(jí)圖表6.4.3多序列條狀圖importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspd#導(dǎo)入相關(guān)模塊data={'series1':[1,3,4,3,5],'series2':[2,4,5,2,4],'series3':[3,2,3,1,3]}df=pd.DataFrame(data)df.plot(kind='bar')plt.show()6.4Matplotlib高級(jí)圖表6.4.3多序列條狀圖importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspddata={'series1':[1,3,4,3,5],'series2':[2,4,5,2,4],'series3':[3,2,3,1,3]}df=pd.DataFrame(data)df.plot(kind='barh')#設(shè)置水平風(fēng)向plt.show()6.4Matplotlib高級(jí)圖表6.4.4多序列堆積條狀圖importmatplotlib.pyplotaspltimportnumpyasnpseries1=np.array([3,4,5,3])#數(shù)組一series2=np.array([1,2,2,5])#數(shù)組二series3=np.array([2,3,3,4])#數(shù)組三index=np.arange(4)plt.axis([0,4,0,15])plt.bar(index,series1,color='r')#條狀圖一plt.bar(index,series2,color='b',bottom=series1)#條狀圖二plt.bar(index,series3,color='g',bottom=(series2+series1))#條狀圖三plt.xticks(index+0.4,['Jan15','Feb15','Mar15','Apr15'])plt.show()6.4Matplotlib高級(jí)圖表6.4.4多序列堆積條狀圖importmatplotlib.pyplotaspltimportnumpyasnpindex=np.arange(4)series1=np.array([3,4,5,3])series2=np.array([1,2,2,5])series3=np.array([2,3,3,4])plt.axis([0,15,0,4])plt.barh(index,series1,color='w',hatch='xx')plt.barh(index,series2,color='w',hatch='///',left=series1)plt.barh(index,series3,color='w',hatch='\\\\\\',left=(series1+series2))plt.yticks(index+0.4,['Jan','Feb','Mar','Apr'])plt.show()6.4Matplotlib高級(jí)圖表6.4.5多面板圖importmatplotlib.pyplotaspltfig=plt.figure()ax=fig.add_axes([0.1,0.1,0.8,0.8])inmer_ax=fig.add_axes([0.6,0.6,0.25,0.25])6.4Matplotlib高級(jí)圖表6.4.5多面板圖importmatplotlib.pyplotaspltimportnumpyasnpfig=plt.figure()ax=fig.add_axes([0.1,0.1,0.8,0.8])inner_ax=fig.add_axes([0.6,0.6,0.25,0.25])x1=np.arange(10)y1=np.array([1,8,3,1,5,6,4,2,9,1])x2=np.arange(10)y2=np.array([1,3,4,2,8,9,5,7,7,3])ax.plot(x1,y1)inner_ax.plot(x2,y2)plt.show()6.4Matplotlib高級(jí)圖表6.4.5多面板圖importmatplotlib.pyplotaspltgs=plt.GridSpec(3,3)fig=plt.figure(figsize=(8,8))fig.add_subplot(gs[1,:2])fig.add_subplot(gs[0,:2])fig.add_subplot(gs[2,0])fig.add_subplot(gs[:2,2])fig.add_subplot(gs[2,1:])plt.show()6.4Matplotlib高級(jí)圖表6.4.5多面板圖importmatplotlib.pyplotaspltimportnumpyasnpgs=plt.GridSpec(3,3)fig=plt.figure(figsize=(8,8))x1=np.array([1,3,2,5])y1=np.array([4,3,7,2])x2=np.arange(5)y2=np.array([3,2,4,6,4])s1=fig.add_subplot(gs[1,:2])s1.plot(x,y,'r')#折線圖一s2=fig.add_subplot(gs[0,:2])s2.bar(x2,y2)#直方圖s3=fig.add_subplot(gs[2,0])s3.barh(x2,y2,color="g")#柱狀圖s4=fig.add_subplot(gs[:2,2])s4.plot(x2,y2,'k')#折線圖二s5=fig.add_subplot(gs[2,1:])s5.plot(x1,y1,'b^',x2,y2,'yo')#散點(diǎn)圖plt.show()6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化任務(wù)說明任務(wù)實(shí)現(xiàn)6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.1任務(wù)說明本案例以省份劃分各個(gè)區(qū)域,現(xiàn)就我國2016年至2020年各省份的生產(chǎn)總值做詳細(xì)分析。主要分析目標(biāo)有:①我國各省市自2016年至2020年的生產(chǎn)總值發(fā)展趨勢(shì)。②我國各省市2020年生產(chǎn)總值比較。③我國各省市2020年生產(chǎn)總值占比分析。④我國省市2020年生產(chǎn)總值分布情況。importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('各地區(qū)生產(chǎn)總值.csv',encoding='gbk')data.set_index('地區(qū)',inplace=True)#將地名設(shè)置為索引值name=['北京市','天津市','河北省','山西省','內(nèi)蒙古自治區(qū)','遼寧省','吉林省','黑龍江省','上海市','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','廣西壯族自治區(qū)','海南省','重慶市','四川省','貴州省','云南省','西藏自治區(qū)','陜西省','甘肅省','青海省','寧夏回族自治區(qū)','新疆維吾爾自治區(qū)','臺(tái)灣省']count=[]6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.2任務(wù)實(shí)現(xiàn)forname1inname:new=list(data.loc[name1])count.append(new)#整理數(shù)據(jù),將各個(gè)列的數(shù)據(jù)匯總為一個(gè)列表year=['2016年','2017年','2018年','2019年','2020年']plt.figure(figsize=(20,10))forcount1incount:plt.plot(year,count1)plt.legend(name)plt.title('2016-2020年各省市總生產(chǎn)值發(fā)展趨勢(shì)(單位/億元)')plt.show()1.我國各省市自2016年至2020年的生產(chǎn)總值發(fā)展趨勢(shì)6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.2任務(wù)實(shí)現(xiàn)1.我國各省市自2016年至2020年的生產(chǎn)總值發(fā)展趨勢(shì)importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('各地區(qū)生產(chǎn)總值.csv',encoding='gbk')data.set_index('地區(qū)',inplace=True)#將地名設(shè)置為索引值name=['北京市','天津市','河北省','山西省','內(nèi)蒙古自治區(qū)','遼寧省','吉林省','黑龍江省','上海市','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','廣西壯族自治區(qū)','海南省','重慶市','四川省','貴州省','云南省','西藏自治區(qū)','陜西省','甘肅省','青海省','寧夏回族自治區(qū)','新疆維吾爾自治區(qū)','臺(tái)灣省']plt.figure(figsize=(20,10))plt.bar(name,data['2020年'],width=0.2)plt.xticks(rotation=45)plt.show()6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.2任務(wù)實(shí)現(xiàn)2.我國各省市2020年的生產(chǎn)總值比較importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('各地區(qū)生產(chǎn)總值.csv',encoding='gbk')data.set_index('地區(qū)',inplace=True)#將地名設(shè)置為索引值x=data['2020年']new_list=[]new=[]foreleminx:ifnotnp.isnan(elem):new_list.append(elem)6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.2任務(wù)實(shí)現(xiàn)3.我國各省市自2020年的生產(chǎn)總值占比分析foriinnew_list:i=int(i)new.append(i)#去除臺(tái)灣省NaN值plt.figure(figsize=(15,15))name=['北京市','天津市','河北省','山西省','內(nèi)蒙古自治區(qū)','遼寧省','吉林省','黑龍江省','上海市','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','廣西壯族自治區(qū)','海南省','重慶市','四川省','貴州省','云南省','西藏自治區(qū)','陜西省','甘肅省','青海省','寧夏回族自治區(qū)','新疆維吾爾自治區(qū)']#因?yàn)榕_(tái)灣省數(shù)據(jù)缺失,所以選擇刪除plt.pie(new,labels=name,autopct="%1.1f%%")plt.title("我國2020年各省市生產(chǎn)總值占比情況")plt.show()6.5實(shí)戰(zhàn)1:我國地區(qū)產(chǎn)值數(shù)據(jù)可視化6.5.2任務(wù)實(shí)現(xiàn)3.我國各省市自2020年的生產(chǎn)總值占比分析importnumpyasnpfrommatplotlibimportpyplotaspltimportpandasaspddata=pd.read_csv('各地區(qū)生產(chǎn)總值.csv',encoding='gbk')plt.rcParams['font.sans-serif']=['SimHei']data.set_index('地區(qū)',inplace=True)#將地名設(shè)置為索引值ax1=plt.figure(figsize=(15,10))name=['北京市','天津市','河北省','山西省','內(nèi)蒙古自治區(qū)','遼

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論