華夫餅圖你見過嗎?一行Python代碼就能畫出來
大家好,歡迎來到 Crossin的編程教室 !
華夫餅圖。
沒錯,就是跟華夫餅一樣的,由多個方塊組成的圖形。

1%。華夫餅圖的典型應用是比較同類型指標完成比例。
雖然matplotlib并沒有提供原生的華夫餅圖接口,需要安裝第三方包pywaffle,配合matplotlib繪制華夫餅圖,但matplotlib與pywaffle完美融合,繪制圖形也非常方便,只需一行代碼即可完成精美圖表繪制。
首先安裝pywaffle:
pip install pywaffle
第一張華夫餅圖
pywaffle的應用非常簡單。首先將Waffle類傳遞給matplotlib.pyplot.figure函數(shù)的FigureClass參數(shù),然后通過設置matplotlib.pyplot.figure函數(shù)的參數(shù)即可完成華夫餅圖的定制。
import matplotlib.pyplot as plt
from pywaffle import Waffle
fig = plt.figure(
FigureClass=Waffle,
rows=100,
columns=39, # 行或列都可以省略
values=[100,100,100,90])
fig.show()

設置標題、標簽和圖例
通過設置對應參數(shù),即可以對目標圖進行自定義。
如標題和圖例分別通過參數(shù)title和legend,均是接受字典中的matplotlib參數(shù)。標簽參數(shù)為labels,如果未指定,values則將使用鍵作為標簽。

設置顏色
顏色是影響一個圖形外觀的重要因素之一。參數(shù)colors接受列表或元組中的顏色。其長度必須等于values。如
values=[30, 16, 4]
colors=["#232066", "#983D3D", "#DCB732"]
更改色塊顏色的另一種方法是將matplotlib中的Colormap傳遞給參數(shù) cmap_name,該參數(shù)可批量設置顏色。包括 Pastel1,Pastel2,Paired,Accent,Dark2,Set1,Set2,Set3,tab10,tab20,tab20b,tab20c。
如cmap_name="tab10"

比較有意思的是下面的字符和圖標這兩個參數(shù)。
設置字符
通過將一個字符列表或元組傳遞給參數(shù)characters,每個類別的類別字符可以具有不同的字符,但長度必須與values相同。
fig = plt.figure(
FigureClass=Waffle,
rows=5,
values=[30, 16, 4],
colors=["#4C8CB5", "#B7CBD7", "#C0C0C0"],
characters='?',
font_size=24)

設置圖標
帶有圖標的華夫餅圖也被稱為象形圖。
使用參數(shù)icons設置圖表形狀,通過將圖標名稱的列表或元組傳遞給參數(shù)icons,支持使用Font Awesome圖標(https://fontawesome.com/)。

使用icon_size設置圖標的大小。
使用icon_style設置圖表樣式可以是Solid, Regular 和 Brands。
使用icon_legend= True設置圖例,圖例中的符號將是圖標,否則,它將是一個顏色條。
icons=['volleyball-ball',
'basketball-ball','futbol']

用華夫餅圖來表白
下面我們來點不一樣的:通過改變圖標、顏色、值的大小,繪制一個 ?? 形的華夫餅圖。
一行代碼繪制愛心圖
fig = plt.figure(figsize=(12, 4),dpi=150,
FigureClass=Waffle,
rows=10,
values=[14,3,6,5,4,6,3,6,3,6,4,6,5,6,5,6,5,5,6,3,13],
colors=["white"]+[ "orange", "white"]*10,
icons=['basketball-ball']*21,
font_size=20)

繪制 "I LOVE U"
設置好需要的參數(shù)
from pywaffle import Waffle
background_color = "#fafafa"
# 華夫餅格子數(shù)
values=[2, 6, 24, 6, 2, 10, 22, 8, 2, 8, 2, 18,
22, 6, 4, 6, 22, 16, 4, 4, 4, 4, 4, 4, 4,
6, 4, 8, 4, 8, 4, 8, 4, 10, 22, 2, 2, 2,
4, 2, 2, 2, 4, 2, 2, 2, 2, 10, 22, 8, 2, 8, 20]
# 顏色
colors=['red'] + ['lightgray', 'red']*26
# 圖標
icons=['heartbeat']+['bomb','heartbeat']*26
繪圖
fig = plt.figure(figsize=(12, 4),
dpi=150, #設置畫布大小
# 設置背景顏色
facecolor=background_color,
# 指定華夫餅圖
FigureClass=Waffle,
# 設置行數(shù)
rows=10,
# 設置值
values=values,
# 設置顏色
colors=colors,
# 設置圖標
icons=icons)

當然,你還可以將不同的字母更換成不同的圖標及顏色,顯得更加絢麗,讓她更心動。

OK,今天的分享到此結束。
程序員的專屬浪漫表白技能又 +1 
更多詳情可以參見官網(wǎng):
https://pywaffle.readthedocs.io/en/latest/
如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點贊/收藏~
作者:云朵君
_往期文章推薦_
