使用Matplotlib提供的pie()函數繪制餅圖
一、環境准備
-
python
-
pip install matplotlib
二、pie()函數常見參數
1. 基本繪制
import matplotlib.pyplot as plt
values = [10,20,30]
plt.pie(values)
plt.show()
2. 參數:explode
意義:分離餅狀圖,突出強調某一部分;
默認:None;
調用:explode=[0, 0, 0.2, 0]
3. 參數:labels
意義:給各個部分添加標簽;
默認:None;
調用:labels=[‘A’, ‘B’, ‘C’, ‘D’]
4. 參數:labeldistance
意義:標簽距離餅狀圖的距離;
默認:1.1;
調用:labeldistance = float(實數)
5. 參數:colors
意義:設置每一部分的顏色;
默認:自動填充;
調用:colors=[‘red’, ‘gray’, ‘yellow’, ‘blue’]
注意:顏色個數必須等於values中數據的個數
6. 參數:autopct
意義:顯示各部分比例,保留小數位數;
默認:None;
調用:autopct=’%1.2f%%’
7. 參數:shadow
意義:陰影,增加立體感;
默認:False;
調用:shadow=True
三、實例
以下是讀取CSV文件中的數據,並繪制成餅圖的一個簡單實例,主要就是對pie()函數的使用.
# 加載數據分析常用庫
import csv
import matplotlib.pyplot as plt
filename = r'D:\learn\project\reptile\job.csv'
with open(filename) as f:
# 創建閱讀器,調用csv.reader()將前面存儲的文件對象作為實參傳給他
reader = csv.reader(f)
# 調用next()一次,將文件的第一行存儲在header_now中
header_now = next(reader)
# 根據索引提取薪資范圍,並存儲在列表中
money = []
for row in reader:
money.append(row[2])
"""
從獲取的薪資范圍列表中分別提取出每個公司給出的最低薪資和最高薪資,
並將提取到的字符串轉化為float格式存儲
"""
listmoney = []
for m in money:
num = m.split('-') # 通過‘-’分割
low = num[0] # 提取最低薪資
high = num[1].split('萬/月')[0] # 提取最高薪資,並將后綴單位去除
# 轉化數據格式為float
lows = float(low)
highs = float(high)
listmoney.append(lows)
listmoney.append(highs)
print(listmoney)
# 設置變量
one = 0
two = 0
three = 0
four = 0
five = 0
for i in listmoney:
if 0 < i <= 1:
one += 1
elif 1 < i <= 1.5:
two += 1
elif 1.5 < i <= 2:
three += 1
elif 2 < i <= 2.5:
four += 1
elif highs >= 2.5:
five += 1
print(one,two,three,four,five)
"""
繪制餅圖
"""
# 用來正常顯示中文標簽
plt.rcParams['font.sans-serif'] = ['SimHei']
# 圖標描述
labels = ['0-1萬/月','1-1.5萬/月','1.5-2萬/月','2~2.5萬/月','2.5+ 萬/月']
# 對應變量
values = [one,two,three,four,five]
# 旋轉角度,將排在第二位的薪資分離出來,突出顯示
explode = [0,0.05,0,0,0]
# 自定義圖例顏色
colors = ['orange','pink','b','g','red']
# 圖表題目
plt.title("上海市軟件測試薪資分布",fontsize = 16,pad=15)
# 各項屬性
plt.tick_params(axis='both', which='major', labelsize=26)
"""
# autopct='%1.1f%% 設置百分比,保留兩位小數
# pctdistance=0.8, #設置百分比標簽和圓心的距離
# startangle=180 設置餅圖的初始角度
"""
plt.pie(values, labels=labels, colors=colors,pctdistance=0.6,explode = explode ,startangle=180, shadow=True, autopct='%0.2f%%')
# 將橫、縱坐標軸標准化處理,保證餅圖是一個正圓,否則為橢圓
plt.axis('equal')
# 不顯示邊框
plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['left'].set_color('none')
plt.gca().spines['bottom'].set_color('none')
# 保存圖片
# plt.savefig('D:\\learn\\salary.png')
# 顯示圖片
plt.show()
顯示效果圖: