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

本期,我們將詳細學(xué)習(xí)matplotlib 繪制餅圖相關(guān)屬性的學(xué)習(xí),let's go~
1. 等高線圖概述
什么是餅圖?
- 餅圖將各項的大小與總項和的比例顯示在一個圓里
- 餅圖展示通過不同大小,來確定各項的占比
- 餅圖相同顏色的數(shù)據(jù)標(biāo)記組成一個數(shù)據(jù)系列
- 餅圖可分為三維餅圖、復(fù)合餅圖、分離餅圖
餅圖常用場景
- 餅圖可用在需要暫時各個部分構(gòu)成比
- 餅圖可反映一個維度各項指標(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軸間距相等
案例展示
本期,我們將適用餅圖來分析操作系統(tǒng)市場占比情況
案例數(shù)據(jù)準(zhǔn)備:使用random.randint產(chǎn)生5個數(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("手機系統(tǒng)占比分析")
plt.show()

2. 餅圖屬性
設(shè)置餅圖的顏色
關(guān)鍵字:colors
可取值選項:None或者顏色列表
顏色列表可以由如下組成:
- 表示顏色的英文單詞:如紅色"red"
- 表示顏色單詞的簡稱如:紅色"r",黃色"y"
- RGB格式:十六進制格式如"#88c999";(r,g,b)元組形式
設(shè)置標(biāo)簽
關(guān)鍵字:labels
默認為:None
需要傳入列表形式的值
設(shè)置突出部分
關(guān)鍵字:explode
默認為:None
需要傳入列表數(shù)據(jù)
如果設(shè)置值后,其指定的部分會突出顯示
設(shè)置填入百分比數(shù)值
關(guān)鍵字:autopct
默認為:None
可選擇值形式:
- 格式字符串如:'%1.1f%%'
- 函數(shù):可以調(diào)用函數(shù)內(nèi)容
餅圖旋轉(zhuǎn)
從x軸逆時針旋轉(zhuǎn)角度:startangle;默認為0,浮點類型
指定分數(shù)方向順逆時針:counterclock;默認為True,bool類型
設(shè)置陰影
關(guān)鍵字:shadow
默認為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)整餅圖的大小
我們在實際制作餅圖時,會遇到改變餅圖的大小,這是我們可以借助餅圖屬性關(guān)鍵字radius
radius:設(shè)置餅圖半徑大小
除此之外,我們還要使用textprops來控制顯示的標(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. 添加圖例
我們在餅圖中顯示各項占比情況時,會在圖表的旁邊添加一組圖例說明。
- pyplot.pie()方法會返回patchee.Wedge列表、文本列表等數(shù)據(jù)
- pyplot.legend()方法傳入wedge元素和指定的labels標(biāo)簽
- 同時可以同legend()方法bbox_to_anchor來設(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. 鏤空餅圖
在餅圖中,我們有時候也用到嵌套鏤空的餅圖。
- 嵌套可以多次調(diào)用pyplot.pie()方法
- 鏤空可以借助pyplot.pie()屬性wedgeprops來進行設(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é)
本期,對matplotlib.pyplot 繪制餅圖pie()相關(guān)屬性的學(xué)習(xí)。在繪制餅圖時,我們會根據(jù)實際需求改變餅圖的大小,嵌套餅圖、添加柱狀圖等圖形輔助查看
以上是本期內(nèi)容,歡迎大佬們點贊評論,下期見~?
以上就是Python利用matplotlib實現(xiàn)餅圖繪制的詳細內(nèi)容,更多關(guān)于Python matplotlib 繪制餅圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python3格式化字符串 f-string的高級用法(推薦)
從Python 3.6開始,f-string是格式化字符串的一種很好的新方法。與其他格式化方式相比,它們不僅更易讀,更簡潔,不易出錯,而且速度更快!本文重點給大家介紹python3格式化字符串 f-string的高級用法,一起看看吧2020-03-03
python基礎(chǔ)教程之python消息摘要算法使用示例
這篇文章主要介紹了python中的消息摘要算法使用示例,需要的朋友可以參考下2014-02-02
Python?Asyncio庫之a(chǎn)syncio.task常用函數(shù)詳解
Asyncio在經(jīng)過一段時間的發(fā)展以及獲取Curio等第三方庫的經(jīng)驗來提供更多的功能,目前高級功能也基本完善。本文主要介紹了Asyncio庫中asyncio.task常用函數(shù)的使用,需要的可以參考一下2023-03-03

