Matplotlib學習---用matplotlib畫餅圖/面包圈圖(pie chart, donut chart)


我在網上隨便找了一組數據,用它來學習畫圖。大家可以直接把下面的數據復制到excel里,然后用pandas的read_excel命令讀取。或者直接在腳本里創建該數據。

 

 

餅圖: ax.pie(x,labels=...,explode=...)  

 

代碼如下:

import numpy as np
import matplotlib
from matplotlib import pyplot as plt
matplotlib.rcParams['font.sans-serif']='Microsoft Yahei' #改字體為微軟雅黑,以便顯示中文
fig,ax=plt.subplots()

animal={"鋸齒動物":38,"蝙蝠類":21.8,"食蟲類":8.2,"靈長類":8,"其他":6.9,"有袋類":6.5,"食肉類":5.6,"偶蹄類":5} #創建數據
data=np.array([i for i in animal.values()]).astype(float) #餅圖顯示數據,將其轉換成float格式
explode=[0.1,0,0,0,0,0,0,0] #設置突出顯示的內容,這里為突出顯示第一項
label=np.array([j for j in animal.keys()]) #設置標簽
ax.pie(data,labels=label,autopct='%.1f%%',explode=explode,startangle=90,counterclock=False) #autopct為顯示百分比,startangle為起始角度,counterclock逆時針選否
ax.set_title("哺乳動物類群") #設置標題
ax.axis("equal") #設置x軸和y軸等長,否則餅圖將不是一個正圓

plt.show()

 

圖像如下:

需要注意的是:所有類別的百分比相加應為100%,千萬不要出現少於或大於100%的情況。

 

還有一種圖是面包圈圖,就是餅中心是空的。可以通過設置ax.pie命令里的wedgeprops參數來達到此效果。

 

還是以上面的數據為例,來畫面包圈圖:

import numpy as np
import matplotlib
from matplotlib import pyplot as plt
matplotlib.rcParams['font.sans-serif']='Microsoft Yahei' #改字體為微軟雅黑,以便顯示中文
fig,ax=plt.subplots()

animal={"鋸齒動物":38,"蝙蝠類":21.8,"食蟲類":8.2,"靈長類":8,"其他":6.9,"有袋類":6.5,"食肉類":5.6,"偶蹄類":5} #創建數據
data=np.array([i for i in animal.values()]).astype(float) #餅圖顯示數據,將其轉換成float格式
label=np.array([j for j in animal.keys()]) #設置標簽
ax.pie(data,labels=label,autopct='%.1f%%',startangle=90,counterclock=False,wedgeprops=dict(width=0.6,edgecolor='w')) #autopct為顯示百分比,startangle為起始角度,counterclock逆時針選否
ax.set_title("哺乳動物類群") #設置標題
ax.axis("equal") #設置x軸和y軸等長,否則餅圖將不是一個正圓

plt.show()

 

圖像如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM