
import matplotlib.pyplot as plt
import numpy as np
餅狀圖
使用pie()函數(shù)來制作餅狀圖。先來看一個簡單的例子。
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()

哦,上圖竟然是扁的!O__O "…,沒關(guān)系,一步一步來。
先來解析一下餅圖的繪制方法吧!
plt.pie(values,labels=labels,colors=colors)
pile()函數(shù)接收一個數(shù)據(jù)集合,將期求和后再對各元素分配比例,再接收一個列表,存放各元素對應(yīng)的類別,最后一個元素則可以指定各元素的顏色表現(xiàn)。
指定圖表的大小
接下來,將上圖的扁的餅圖調(diào)成一個標(biāo)準(zhǔn)的圓O(∩_∩)O~~
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
'''在繪制餅圖之前,指定圖表的大小,令其長寬一致'''
plt.figure(figsize=(6,6))
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
plt.show()

上面是一種改善圖表的方法,另一種方法是使用axis()函數(shù)
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
plt.pie(values,labels=labels,colors=colors)
'''equal表示平等、平衡的意思,即將x/y軸寬度調(diào)整為一致,與上例道理上是一樣的'''
plt.axis('equal')
plt.show()

突出顯示某一塊扇形
explode屬性可以指定對應(yīng)元素脫離餅圖的大小,取值范圍0~1,值越大,脫離程度越大。
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
plt.pie(values,labels=labels,colors=colors,explode=explode)
plt.axis('equal')
plt.show()

讓餅狀圖放置一定的角度
startangle屬性可以指定餅圖放置的角度,取值為0~360。
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
'''順便加個標(biāo)題'''
plt.title('餅狀圖')
plt.pie(values,labels=labels,colors=colors,explode=explode,startangle=180)
plt.axis('equal')
plt.show()

顯示各元素所占的百分比
autopct可以在第一塊的中間位置添加文本標(biāo)簽來顯示百分比。
shadow=True可以為圖表添加陰影效果。
labels = ['蘋果','華為','小米','三星']
values = [10,30,45,15]
colors = ['red','yellowgreen','blue','lightskyblue']
explode = [0.3,0,0,0]
plt.title('餅狀圖')
plt.pie(values,
labels=labels,
colors=colors,
explode=explode,
shadow=True, # 陰影
autopct='%1.1f%%', # 添加百分比,浮點數(shù),保留一位
startangle=180)
plt.axis('equal')
plt.show()

為 DataFrame 繪制餅圖
import pandas as pd
data = {'one':[1,3,4,5,5],
'two':[2,4,5,2,7],
'three':[3,2,4,8,9]}
df = pd.DataFrame(data)
df['one'].plot(kind='pie',figsize=(6,6)) # 指定圖表類型和大小
plt.show()
