Python利用Matplotlib庫(kù)實(shí)現(xiàn)繪制餅形圖
1.plt.pie()
餅圖 常常用來(lái)顯示 整體中各部分所占的比例,在python-matplotlib庫(kù)中通過(guò)plt.pie()方法來(lái)實(shí)現(xiàn)。
其主要參數(shù)如下:
x --------每一塊餅圖的比例組成的序列。可以是一個(gè)列表。如果其中元素的值加起來(lái)大于一,則會(huì)通過(guò)
歸一化處理后的結(jié)果。
explode -------- 指每一塊餅距離圓心的距離。默認(rèn)為0。如果大于0,則餅即會(huì)分裂出來(lái),即“分裂餅形圖”效果。
labels -------- 標(biāo)簽,即每一塊餅圖外側(cè)顯示的說(shuō)明文字
autopct -------- 設(shè)置餅圖百分比的格式。即字符串的格式,可以使用格式化字符串表達(dá)式或者format()函數(shù)的表達(dá)式。 不設(shè)定這個(gè)參數(shù)則不會(huì)顯示百分比的字符串。
pctdistance --------指百分比的位置刻度,默認(rèn)為0.6。
shadow --------布爾類(lèi)型,餅圖是否帶陰影(立體感)。默認(rèn)False不帶。
labeldistance --------標(biāo)記的繪制的位置,占半徑長(zhǎng)度的比例。默認(rèn)為1.1,如果大于1則顯示在餅的內(nèi)側(cè)。
startangle --------起始繪制角度,默認(rèn)從x軸正方向逆時(shí)針畫(huà)起。例如,設(shè)置為90則從y軸正方向畫(huà)起。
radius -------- 餅圖的半徑,默認(rèn)為1。
counterclock -------- 指針?lè)较?。布爾?lèi)型。默認(rèn)為T(mén)rue,表示逆時(shí)針。如果為False則表示順時(shí)針。
wedgeprops -------- wedge對(duì)象的屬性(wedge翻譯過(guò)來(lái)即三角木,楔子,即表示餅圖中的每一塊兒),可選參數(shù),字典類(lèi)型,默認(rèn)為None。這個(gè)字典將會(huì)傳遞給wedge對(duì)象。如wedgeprops={‘linewidth’:2}表示wedge的線條寬度為2。
textprops -------- text標(biāo)簽文本的屬性。也是一個(gè)字典類(lèi)型,可選。默認(rèn)為None。
center -------- 餅圖的原點(diǎn)。
frame -------- 是否顯示軸框架,布爾類(lèi)型,默認(rèn)不顯示,F(xiàn)alse。如果為T(mén)rue則會(huì)顯示軸框架??梢耘cgrid()配合使用。通常不使用該參數(shù),因?yàn)檩S框架會(huì)干擾圖像效果。
rotatelabels -------- 可選,旋轉(zhuǎn)標(biāo)簽到指定角度。(“指定”的含義是,以該位置連接圓心的半徑為水平基準(zhǔn)。)
2. 餅圖基本
繪制一張簡(jiǎn)單的餅圖,圖像上的百分?jǐn)?shù)顯示出一位小數(shù)。標(biāo)簽為[‘A類(lèi)’, ‘B類(lèi)’, ‘C類(lèi)’, ‘D類(lèi)’]。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] ='#cc00ff' x = [10, 20, 35, 25] plt.pie(x, autopct='%1.1f%%', labels=['A類(lèi)', 'B類(lèi)', 'C類(lèi)', 'D類(lèi)']) plt.title("產(chǎn)品數(shù)量占比") plt.show()
圖像效果呈現(xiàn)如下:
3. 餅狀圖進(jìn)階
設(shè)置背景顏色為’#00E5EE’,
百分?jǐn)?shù)顯示一位小數(shù),
四塊的顏色依次為[‘red’, ‘green’, ‘purple’, ‘yellow’]
B類(lèi) 在餅圖中 向外分裂0.2個(gè)單位 explode=[0, 0.2, 0, 0],
從y軸正方向開(kāi)始繪圖 startangle=90,
餅圖半徑設(shè)為1.1 radius=1.1,
標(biāo)簽文本字體的大小為20,顏色為 ‘#8B1A1A’ textprops={‘fontsize’: 20, ‘color’: ‘#8B1A1A’}
顯示陰影效果,
標(biāo)簽在半徑0.6單位處 pctdistance=0.6,
每個(gè)標(biāo)簽都選擇一定的角度 rotatelabels=True
代碼如下:
import matplotlib.pyplot as plt fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8)) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' x = [10, 20, 35, 25] plt.pie(x, labels=['A類(lèi)', 'B類(lèi)', 'C類(lèi)', 'D類(lèi)'], autopct='%1.1f%%', colors=['red', 'green', 'purple', 'yellow'], explode=[0, 0.2, 0, 0], startangle=90, radius=1.1, textprops={'fontsize': 20, 'color': '#8B1A1A'}, shadow=True, pctdistance=0.6, rotatelabels=True ) # 設(shè)置標(biāo)題文本、y坐標(biāo)(即豎直方向上的位置),字體大小、顏色 plt.title("產(chǎn)品數(shù)量占比", y=1.05, fontsize=25, color='#cc00ff') plt.show()
4. 環(huán)形圖
繪制環(huán)形圖仍然使用plt.pie()方法,
只需要設(shè)置其中的wedgeprops參數(shù)的屬性。
代碼示例如下
在上例代碼的基礎(chǔ)上,取消分裂,
添加 wedgeprops={‘width’: 0.4, ‘edgecolor’: ‘k’}。
然后把百分?jǐn)?shù)的位置pctdistance設(shè)置為0.8。
import matplotlib.pyplot as plt fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8)) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' x = [10, 20, 35, 25] plt.pie(x, labels=['A類(lèi)', 'B類(lèi)', 'C類(lèi)', 'D類(lèi)'], autopct='%1.1f%%', colors=['red', 'green', 'purple', 'yellow'], startangle=90, radius=1.1, textprops={'fontsize': 20, 'color': '#8B1A1A'}, shadow=True, pctdistance=0.8, rotatelabels=True, wedgeprops={'width': 0.4, 'edgecolor': 'k'} ) plt.title("產(chǎn)品數(shù)量占比", y=1.05, fontsize=25, color='#cc00ff') plt.show()
5. 內(nèi)嵌環(huán)形圖
內(nèi)嵌環(huán)形圖,以內(nèi)嵌一次為例。即兩個(gè)圓環(huán),需要調(diào)用兩次plt.pie()方法。
通過(guò)wedgeprops參數(shù)設(shè)置不同的環(huán)形邊界,通過(guò)radius設(shè)置不同的半徑。
全局字體為SimHei(黑體)。標(biāo)題部分的局部字體使用“華文琥珀”(將系統(tǒng)的字體文件STHUPO.TTF復(fù)制到當(dāng)前目錄下)。
import matplotlib.pyplot as plt from matplotlib import font_manager fig = plt.figure(1, facecolor='#ffffcc', figsize=(6, 6)) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.rcParams['axes.facecolor'] = '#cc00ff' x1 = [10, 20, 35, 25] x2 = [8, 32, 20, 40] plt.pie(x1, autopct='%1.1f%%', colors=['red', 'green', 'blue', 'yellow'], startangle=90, radius=1, textprops={'fontsize': 16, 'color': 'purple'}, pctdistance=0.85, rotatelabels=True, wedgeprops={'linewidth': 2, 'width': 0.3, 'edgecolor': 'k'} ) plt.pie(x2, autopct='%1.1f%%', colors=['red', 'green', 'blue', 'yellow'], startangle=90, radius=0.7, textprops={'fontsize': 16, 'color': 'purple'}, pctdistance=0.6, rotatelabels=True, wedgeprops={'linewidth': 2, 'width': 0.4, 'edgecolor': 'k'} ) plt.title("產(chǎn)品數(shù)量占比", fontsize=25, color='purple', fontproperties=font_manager.FontProperties(fname='STHUPO.TTF')) plt.legend(['A類(lèi)', 'B類(lèi)', 'C類(lèi)', 'D類(lèi)'], bbox_to_anchor=(0.9, 0.2)) plt.show()
程序執(zhí)行效果如下:
到此這篇關(guān)于Python利用Matplotlib庫(kù)實(shí)現(xiàn)繪制餅形圖的文章就介紹到這了,更多相關(guān)Python Matplotlib餅圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 文件轉(zhuǎn)成16進(jìn)制數(shù)組的實(shí)例
今天小編就為大家分享一篇python 文件轉(zhuǎn)成16進(jìn)制數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Python趣味挑戰(zhàn)之實(shí)現(xiàn)簡(jiǎn)易版音樂(lè)播放器
小伙伴們天天學(xué)編程應(yīng)該都學(xué)累了,今天特地給大家整理了這篇文章,讓大家在學(xué)習(xí)的時(shí)候也收貨快樂(lè),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-05-05cmd輸入python命令無(wú)反應(yīng)的解決方案
這篇文章主要介紹了cmd輸入python命令無(wú)反應(yīng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02python requests更換代理適用于IP頻率限制的方法
今天小編就為大家分享一篇python requests更換代理適用于IP頻率限制的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python Pygame實(shí)戰(zhàn)之趣味籃球游戲的實(shí)現(xiàn)
這篇文章主要為大家分享了一個(gè)基于Python和Pygame實(shí)現(xiàn)的一個(gè)趣味籃球游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-04-04Python?標(biāo)準(zhǔn)庫(kù)?fileinput與文件迭代器
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)fileinput與文件迭代器,fileinput模塊可以對(duì)一個(gè)或多個(gè)文件中的內(nèi)容進(jìn)行迭代、遍歷等操作,更多詳細(xì)內(nèi)容需要的朋友可以參考一下2022-09-09Python subprocess庫(kù)六個(gè)實(shí)例快速掌握
這次來(lái)說(shuō)Python的第三方庫(kù)subprocess庫(kù),在python2.4以上的版本commands模塊被subprocess取代了。一般當(dāng)我們?cè)谟肞ython寫(xiě)運(yùn)維腳本時(shí),需要履行一些Linux shell的命令,Python中subprocess模塊就是專(zhuān)門(mén)用于調(diào)用Linux shell命令,并返回狀態(tài)和結(jié)果,可以完美的解決這個(gè)問(wèn)題2022-10-10python 獲取當(dāng)前目錄下的文件目錄和文件名實(shí)例代碼詳解
這篇文章主要介紹了python 獲取當(dāng)前目錄下的文件目錄和文件名實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03Python免費(fèi)驗(yàn)證碼識(shí)別之ddddocr識(shí)別OCR自動(dòng)庫(kù)實(shí)現(xiàn)
在Python爬蟲(chóng)過(guò)程中,有些網(wǎng)站需要驗(yàn)證碼通過(guò)后方可進(jìn)入網(wǎng)頁(yè),目的很簡(jiǎn)單,就是區(qū)分是人閱讀訪問(wèn)還是機(jī)器爬蟲(chóng),下面這篇文章主要給大家介紹了關(guān)于Python免費(fèi)驗(yàn)證碼識(shí)別之ddddocr識(shí)別OCR自動(dòng)庫(kù)實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-02-02