更新時間:2022-06-13 來源:黑馬程序員 瀏覽量:
今天的Python培訓課程,我們介紹一下華夫餅圖。華夫餅圖亦稱為直角餅圖,它是餅圖的變體,可以直觀展示部分與整體的比例。華夫餅圖一般由100個方格組成,其中每個方格代表1%,方格不同的顏色代表不同的分類,常見于比較同類型指標完成比例的場景,例如電影上座率、公司業(yè)務實際完成率等。
pywaffle是Python中專門繪制華夫餅圖的包,它提供了一個繼承自Figure的子類Waffle,通過將Waffle類傳遞給figure()函數(shù)的FigureClass參數(shù)即可創(chuàng)建華夫餅圖。figure()函數(shù)中創(chuàng)建華夫餅圖的常用參數(shù)如下。
.FigureClass:可以是Figure類或Fgiure子類。
.rows:表示華夫餅圖的行數(shù)。
.columns:表示華夫餅圖的列數(shù)。
.values:表示數(shù)據(jù),可以接收數(shù)組或字典。若values參數(shù)接收一個字典,則將字典的鍵作為華夫餅如的圖例項。
.colors:表示每個分類數(shù)據(jù)的顏色列表。
.vertical:表示是否按垂直方向繪制華夫餅圖,默認為False。
.title:表示標題,可以接收一個字典,其中字典的鍵為title()函數(shù)的關(guān)鍵字參數(shù)。
.legend:表示圖例,可以接收一個字典,其中字典的鍵為legend()函數(shù)的關(guān)鍵字參數(shù)。
例如,創(chuàng)建一個10行10列的華夫餅圖,具體代碼如下。
plt.figure( FigureClass=Waffle, # 指定畫布類為Waffle rows=10, # 行數(shù)設(shè)為10 columns=10, # 列數(shù)設(shè)為10 values=[45, 55] # 一組數(shù)據(jù) )
假設(shè)某影院于周六上映了電影《少年的你》,并統(tǒng)計了1號觀影廳的上座率。下面結(jié)合matplotlib和pywaffle繪制一個說明1號廳上座率的華夫餅圖,示例代碼如下。
import matplotlib.pyplot as plt from pywaffle import Waffle plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False # 繪制華夫餅圖 plt.figure(FigureClass=Waffle, rows=10, columns=10, values=[95, 5], vertical=True, colors=['#20B2AA', '#D3D3D3'], title={ 'label' : '電影《少年的你》上座率'}, legend={'loc': 'upper right', 'labels': ['占座', '空座']} ) plt.show()
運行程序,效果如圖8-22所示。
圖8-22 電影《少年的你》上座率的華夫餅圖
圖8-22中華夫餅圖總共由100個方格組成,其中綠色的方格代表上座的比例,灰色的方格代表空座的比例。由圖8-22可知,電影《少年的你》的上座率為95%。