Python+matplotlib繪制餅圖和堆疊圖_第1頁(yè)
Python+matplotlib繪制餅圖和堆疊圖_第2頁(yè)
Python+matplotlib繪制餅圖和堆疊圖_第3頁(yè)
Python+matplotlib繪制餅圖和堆疊圖_第4頁(yè)
Python+matplotlib繪制餅圖和堆疊圖_第5頁(yè)
已閱讀5頁(yè),還剩2頁(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)介

第Python+matplotlib繪制餅圖和堆疊圖目錄一、pie()函數(shù)用來(lái)繪制餅圖二、一個(gè)簡(jiǎn)單的例子三、堆疊圖餅圖常用于統(tǒng)計(jì)學(xué)模塊,畫餅圖用到的方法為:pie()

一、pie()函數(shù)用來(lái)繪制餅圖

pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=0,radius=1,counterclock=True,wedgeprops=None,textprops=None,center=0,0,frame=False,rotatelabels=False,*,normalize=None,data=None)

pie()函數(shù)參數(shù)較多,需要我們調(diào)整的常見(jiàn)為以下幾個(gè)

x:每個(gè)扇形的占比的序列或數(shù)組

explode:如果不是None,則是一個(gè)len(x)長(zhǎng)度的數(shù)組,指定每一塊的突出程度;突出顯示,設(shè)置每一塊分割出來(lái)的間隙大小

labels:為每個(gè)扇形提供標(biāo)簽的字符串序列

colors:為每個(gè)扇形提供顏色的字符串序列

autopct:如果是一個(gè)格式字符串,標(biāo)簽將是fmt%pct。如果是一個(gè)函數(shù),它將被調(diào)用。

shadow:陰影

startangle:從x軸逆時(shí)針旋轉(zhuǎn),餅的旋轉(zhuǎn)角度參數(shù)用法,可以去官網(wǎng)查詢,并自己多去償試。

二、一個(gè)簡(jiǎn)單的例子

統(tǒng)計(jì)每天休息、工作、娛樂(lè)等時(shí)間的百分比

importmatplotlib.pyplotasplt

slices=[7,2,9,3,3]

activities=['sleeping','eating','working','studing','playing']

cols=['r','m','y','c','b']

plt.pie(slices,

labels=activities,

colors=cols,#自定義的顏色序列,對(duì)比slices,可多可少,少時(shí)自動(dòng)補(bǔ)充,如沒(méi)有,則默認(rèn)不同顏色。

startangle=90,

shadow=True,

explode=(0,0.1,0,0,0.2),#占比突出程度,

autopct='%1.1f%%'#百分比的顯示格式

plt.title('Timestatistics')

plt.show()

實(shí)際運(yùn)行結(jié)果:

注意:startangle=90時(shí)的開(kāi)始位置。整個(gè)餅圖是從0度(圓心向右方向)逆時(shí)針?lè)植嫉摹?/p>

那繼續(xù)用上篇?jiǎng)?chuàng)建的2個(gè)色子,來(lái)實(shí)現(xiàn)一個(gè)餅圖。

思考:上述餅圖代碼中最能決定餅圖形狀的參數(shù)是slices=[7,2,9,3,3],在不考慮每個(gè)占比名稱、美觀等的情況下,先確定如何實(shí)現(xiàn)slices中的各數(shù)值。

比如,當(dāng)投擲2粒色子(一個(gè)8個(gè)面,一個(gè)6個(gè)面)時(shí),1000000次時(shí),分別統(tǒng)計(jì)出現(xiàn)點(diǎn)1、2、3、4、514的總次數(shù),保存到slices中即可。用數(shù)列中的統(tǒng)計(jì)方法list.count()即可。

主要就是增加兩行代碼:

new_slices=[]#新建一個(gè)數(shù)列

whileside=max_result:

side+=1

new_bins.append(side)#這是之前做柱狀圖需要用到的

new_slices.append(results.count(int(side)))#將保存兩色子之和的數(shù)列,直接進(jìn)行統(tǒng)計(jì),results.count(int(side))就是在results的數(shù)列中統(tǒng)計(jì)出現(xiàn)side的次數(shù)。

運(yùn)行結(jié)果,一樣也是顯示出點(diǎn)數(shù)之和7,8,9的出現(xiàn)的次數(shù)最多,然后逐漸減小:

總之,餅圖通過(guò)將一個(gè)圓按照分類的占比劃分成多個(gè)區(qū)塊,整個(gè)圓餅代表數(shù)據(jù)的總量,每個(gè)區(qū)塊表示該分類占總體的比例大小,所有區(qū)塊的加和等于100%。

三、堆疊圖

使用matplotlib中的stackplot()函數(shù)可以快速繪制堆積圖,stackplot()函數(shù)的語(yǔ)法格式如下所示

stackplot(x,y,labels=(),baseling=zero,data=None,*args,**kwargs)

該函數(shù)常用參數(shù)的含義如下

x:表示x軸的數(shù)據(jù),可以是一維數(shù)組。

y:表示y軸的數(shù)據(jù),可以是二維數(shù)組或一維數(shù)組序列。

labels:表示每組折線及填充區(qū)域的標(biāo)簽。

baseline:表示計(jì)算基線的方法,包括zero、sym、wiggle和weighted_wiggle。

其中:

zero表示恒定零基線,即簡(jiǎn)單的堆積圖;

sym表示對(duì)稱于零基線;

wiggle表示最小化平方斜率的總和;

weighted_wiggle表示執(zhí)行相同的操作,但權(quán)重用于說(shuō)明每層的大小。

用同一個(gè)例子來(lái)看一下堆疊圖的效果,代碼如下:

importmatplotlib.pyplotasplt

days=[1,2,3,4,5,6,7]

sleeping=[7,8,6,8,7,8,6]

eating=[2,3,3,3,2,2,2]

working=[7,7,7,8,10,3,4]

studing=[6,4,4,4,3,8,11]

playing=[2,2,4,1,2,3,1]

labellist=['sleeping','eating','working','studing','playing']

colorlist=['c','y','b','r','g']

plt.stackplot(days,sleeping,eating,working,studing,playing,labels=labellist,colors=colorlist)

plt.xlabel('x')

plt.ylabel('y')

plt.legend(loc=(0.07,0.05))

plt.title('StackPlots')

plt.show()

運(yùn)行結(jié)果如下:

plt.legend()是顯示左下角的標(biāo)簽。而語(yǔ)句plt.stackplot()函數(shù)中的sleeping,eating,working,studing,playing是一維數(shù)組序列,即stackplot(x,y)中的y值,是一系列一維數(shù)據(jù)。

很明顯,通過(guò)上述餅圖與堆疊圖的對(duì)比,它們的區(qū)別:餅圖只能展示一段時(shí)間里,某個(gè)項(xiàng)目所花時(shí)間占總時(shí)間的比,而堆疊圖可以展示這一段時(shí)間里,每天各項(xiàng)所花費(fèi)時(shí)間。

既然sleeping,eating,working,studing,playing形成的一維數(shù)組,感覺(jué)參數(shù)比較多,那直接形成一個(gè)二維數(shù)組如何?做如下修改:

days=[1,2,3,4,5,6,7]

sleeping=[7,8,6,8,7,8,6]

eating=[2,3,3,3,2,2,2]

working=[7,7,7,8,10,3,4]

studing=[6,4,4,4,3,8,11]

playing=[2,2,4,1,2,3,1]

times=[#二維數(shù)組,以數(shù)列作為元素的數(shù)列。

[7,8,6,8,7,8,6],#上述sleeping數(shù)列

[2,3,3,3,2,2,2],

[7,7,7,8,10,3,4],

[6,4,4,4,3,8,11],

[2,2,4,1,2,3,1]

plt.stackplot(days,times,labels=labelli

溫馨提示

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