Python利用matplotlib實(shí)現(xiàn)餅圖繪制
前言
眾所周知,matplotlib.pyplot 提供繪制不同表格繪制方法,如使用plot()方法繪制折線,bar()繪制柱
在matplotlib.pyplot 中還有一種圖表用于直觀表示占比情況的餅圖,在matplotlib官網(wǎng)上也列舉出非常多關(guān)于餅圖的案例。

本期,我們將詳細(xì)學(xué)習(xí)matplotlib 繪制餅圖相關(guān)屬性的學(xué)習(xí),let's go~
1. 等高線圖概述
什么是餅圖?
- 餅圖將各項(xiàng)的大小與總項(xiàng)和的比例顯示在一個(gè)圓里
- 餅圖展示通過(guò)不同大小,來(lái)確定各項(xiàng)的占比
- 餅圖相同顏色的數(shù)據(jù)標(biāo)記組成一個(gè)數(shù)據(jù)系列
- 餅圖可分為三維餅圖、復(fù)合餅圖、分離餅圖
餅圖常用場(chǎng)景
- 餅圖可用在需要暫時(shí)各個(gè)部分構(gòu)成比
- 餅圖可反映一個(gè)維度各項(xiàng)指標(biāo)占總體的占比情況
- 餅圖適用在只看大體占比,不要數(shù)據(jù)精度的情況
繪制等餅圖步驟
- 導(dǎo)入matplotlib.pyplot模塊
- 準(zhǔn)備數(shù)據(jù),可以使用numpy/pandas整理數(shù)據(jù)
- 調(diào)用pyplot.pie()繪制餅圖
- 調(diào)用axis方法調(diào)整x/y軸間距相等
案例展示
本期,我們將適用餅圖來(lái)分析操作系統(tǒng)市場(chǎng)占比情況
案例數(shù)據(jù)準(zhǔn)備:使用random.randint產(chǎn)生5個(gè)數(shù)值
import numpy as np size = np.random.randint(0,100,5)
繪制餅圖
import matplotlib.pyplot as plt\
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"])
plt.title("手機(jī)系統(tǒng)占比分析")
plt.show()

2. 餅圖屬性
設(shè)置餅圖的顏色
關(guān)鍵字:colors
可取值選項(xiàng):None或者顏色列表
顏色列表可以由如下組成:
- 表示顏色的英文單詞:如紅色"red"
- 表示顏色單詞的簡(jiǎn)稱如:紅色"r",黃色"y"
- RGB格式:十六進(jìn)制格式如"#88c999";(r,g,b)元組形式
設(shè)置標(biāo)簽
關(guān)鍵字:labels
默認(rèn)為:None
需要傳入列表形式的值
設(shè)置突出部分
關(guān)鍵字:explode
默認(rèn)為:None
需要傳入列表數(shù)據(jù)
如果設(shè)置值后,其指定的部分會(huì)突出顯示
設(shè)置填入百分比數(shù)值
關(guān)鍵字:autopct
默認(rèn)為:None
可選擇值形式:
- 格式字符串如:'%1.1f%%'
- 函數(shù):可以調(diào)用函數(shù)內(nèi)容
餅圖旋轉(zhuǎn)
從x軸逆時(shí)針旋轉(zhuǎn)角度:startangle;默認(rèn)為0,浮點(diǎn)類型
指定分?jǐn)?shù)方向順逆時(shí)針:counterclock;默認(rèn)為True,bool類型
設(shè)置陰影
關(guān)鍵字:shadow
默認(rèn)為False
在餅圖下繪制出陰影
我們結(jié)合第一節(jié)的案例添加一些屬性,需要顯示占比數(shù)值,顏色顯示指定顏色,突出MAC占比
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"],
autopct="%1.1f%%",
explode=[0,0.1,0,0,0],
colors=("r","blue","#88c999",(1,1,0),"0.5"))

3. 調(diào)整餅圖的大小
我們?cè)趯?shí)際制作餅圖時(shí),會(huì)遇到改變餅圖的大小,這是我們可以借助餅圖屬性關(guān)鍵字radius
radius:設(shè)置餅圖半徑大小
除此之外,我們還要使用textprops來(lái)控制顯示的標(biāo)簽的大小
plt.pie(size,labels=["Windows","MAC","Linux","Android","Other"],autopct="%1.1f%%",
explode=[0,0.1,0,0,0],
colors=("r","blue","#88c999",(1,1,0),"0.5"),radius=0.5,textprops={'size':"smaller"})

4. 添加圖例
我們?cè)陲瀳D中顯示各項(xiàng)占比情況時(shí),會(huì)在圖表的旁邊添加一組圖例說(shuō)明。
- pyplot.pie()方法會(huì)返回patchee.Wedge列表、文本列表等數(shù)據(jù)
- pyplot.legend()方法傳入wedge元素和指定的labels標(biāo)簽
- 同時(shí)可以同legend()方法bbox_to_anchor來(lái)設(shè)置圖例的位置
La = ["Windows","MAC","Linux","Android","Other"]
def f(pct,n):
num = int(round(pct*np.sum(n)))
return "{:.1f}%\n{:d}w".format(pct,num)
wedges ,text,autotexts =plt.pie(size,autopct=lambda pct: f(pct,size),
colors=("r","blue","#88c999",(1,1,0),"0.5"),textprops=dict(color='w'))
plt.legend(wedges,La,loc="right",bbox_to_anchor=(1,0,0.3,1))

5. 鏤空餅圖
在餅圖中,我們有時(shí)候也用到嵌套鏤空的餅圖。
- 嵌套可以多次調(diào)用pyplot.pie()方法
- 鏤空可以借助pyplot.pie()屬性wedgeprops來(lái)進(jìn)行設(shè)置
- wedgeprops={"width":0.3,"edgecolor":'w'}
cmap = plt.get_cmap("tab20c")
plt.pie(size,
colors=("r","blue","#88c999",(1,1,0),"0.5"),textprops=dict(color='w'),wedgeprops=dict(width=0.3,edgecolor='w'))
plt.pie(size,
colors= cmap(np.arange(3)*5),radius=0.7,wedgeprops=dict(width=0.3,edgecolor='w'),textprops={'size':"smaller"})

總結(jié)
本期,對(duì)matplotlib.pyplot 繪制餅圖pie()相關(guān)屬性的學(xué)習(xí)。在繪制餅圖時(shí),我們會(huì)根據(jù)實(shí)際需求改變餅圖的大小,嵌套餅圖、添加柱狀圖等圖形輔助查看
以上是本期內(nèi)容,歡迎大佬們點(diǎn)贊評(píng)論,下期見(jiàn)~?
以上就是Python利用matplotlib實(shí)現(xiàn)餅圖繪制的詳細(xì)內(nèi)容,更多關(guān)于Python matplotlib 繪制餅圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制
- Python+matplotlib繪制餅圖和堆疊圖
- Python+matplotlib實(shí)現(xiàn)餅圖的繪制
- python matplotlib模塊基本圖形繪制方法小結(jié)【直線,曲線,直方圖,餅圖等】
- python通過(guò)matplotlib生成復(fù)合餅圖
- python使用Matplotlib畫餅圖
- Python通過(guò)matplotlib畫雙層餅圖及環(huán)形圖簡(jiǎn)單示例
- python利用matplotlib庫(kù)繪制餅圖的方法示例
- Python 如何利用pandas和matplotlib繪制餅圖
相關(guān)文章
python3格式化字符串 f-string的高級(jí)用法(推薦)
從Python 3.6開(kāi)始,f-string是格式化字符串的一種很好的新方法。與其他格式化方式相比,它們不僅更易讀,更簡(jiǎn)潔,不易出錯(cuò),而且速度更快!本文重點(diǎn)給大家介紹python3格式化字符串 f-string的高級(jí)用法,一起看看吧2020-03-03
Python可變參數(shù)函數(shù)用法實(shí)例
這篇文章主要介紹了Python可變參數(shù)函數(shù)用法,實(shí)例分析了Python可變參數(shù)函數(shù)的定義與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
python實(shí)現(xiàn)俄羅斯方塊游戲(改進(jìn)版)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)俄羅斯方塊游戲的改進(jìn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
python基礎(chǔ)教程之python消息摘要算法使用示例
這篇文章主要介紹了python中的消息摘要算法使用示例,需要的朋友可以參考下2014-02-02
Python?Asyncio庫(kù)之a(chǎn)syncio.task常用函數(shù)詳解
Asyncio在經(jīng)過(guò)一段時(shí)間的發(fā)展以及獲取Curio等第三方庫(kù)的經(jīng)驗(yàn)來(lái)提供更多的功能,目前高級(jí)功能也基本完善。本文主要介紹了Asyncio庫(kù)中asyncio.task常用函數(shù)的使用,需要的可以參考一下2023-03-03

