標籤:

matplotlib 畫圖 (餅圖)

畫餅圖用到的函數為:

matplotlib.pyplot.pie()

參數為:

pie(x, explode=None, labels=None, colors=(b, g, r, c, m, y, k, w), autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center = (0, 0), frame = False )

參數說明:

x : 繪圖數據 (每一塊)的比例,如果sum(x) > 1會使用sum(x)歸一化

labels :(每一塊)餅圖外側顯示的說明文字

explode :餅圖某些部分的突出顯示,即呈現爆炸式

startangle: 起始繪製角度,默認圖是從x軸正方向逆時針畫起,如設定=90則從y軸正方向畫起

shadow :是否陰影

labeldistance: label繪製位置,相對於半徑的比例, 如<1則繪製在餅圖內側

autopct :控制餅圖內百分比設置,可以使用format字元串或者format function

%1.1f指小數點前後位數(沒有用空格補齊)

pctdistance :類似於labeldistance,指定autopct的位置刻度

radius : 控制餅圖半徑

textprops:設置餅圖中文本的屬性,如字體大小、顏色等;

center:指定餅圖的中心點位置,默認為原點

frame:是否要顯示餅圖背後的圖框,如果設置為True的話,需要同時控制圖框x軸、y軸的範圍和餅圖的中心位置;

返回值:

如果沒有設置autopct,返回(patches, texts)

如果設置autopct,返回(patches, texts, autotexts)

patches -- list --matplotlib.patches.Wedge對象

texts autotexts -- matplotlib.text.Text對象

案例:芝麻信用失信用戶分析

import matplotlib.pyplot as pltimport matplotlibimport numpy as npimport pandas as pd# 中文亂碼的處理plt.rcParams[ font.sans-serif] =[ Microsoft YaHei]plt.rcParams[ axes.unicode_minus] = Falsedata = pd.read_excel(E:\python pingshi\python數據分析與挖掘\貨運.xls)edu = [0.2515,0.3724,0.3336,0.0368,0.0057]labels = [中專,大專,本科,碩士,其他]explode = [0,0.1,0,0,0] # 用於突出顯示大專學歷人群colors=[blue,red,green,yellow,orange] # 自定義顏色# 將橫、縱坐標軸標準化處理,保證餅圖是一個正圓,否則為橢圓plt.axes(aspect=equal) #plt.axes(aspect=1)#使x y軸比例相同# 控制x軸和y軸的範圍plt.xlim(0,4)plt.ylim(0,4)# 繪製餅圖plt.pie(x = edu, # 繪圖數據 explode=explode, # 突出顯示大專人群 labels=labels, # 添加教育水平標籤 colors=colors, # 設置餅圖的自定義填充色 autopct=%.1f%%, # 設置百分比的格式,這裡保留一位小數 pctdistance=0.8, # 設置百分比標籤與圓心的距離 labeldistance = 1.15, # 設置教育水平標籤與圓心的距離 startangle = 180, # 設置餅圖的初始角度 radius = 1.5, # 設置餅圖的半徑 counterclock = False, # 是否逆時針,這裡設置為順時針方向 wedgeprops = {linewidth: 1.5, edgecolor:green},# 設置餅圖內外邊界的屬性值 textprops = {fontsize:12, color:k}, # 設置文本標籤的屬性值 center = (1.8,1.8), # 設置餅圖的原點 frame = 1 )# 是否顯示餅圖的圖框,這裡設置顯示# 刪除x軸和y軸的刻度plt.xticks(())plt.yticks(())# 添加圖標題plt.title(芝麻信用失信用戶教育水平分布)

當然也可以定義一個畫圖函數,傳入參數繪圖。

def draw_pie(labels,x): explode = [0, 0.1, 0, 0, 0] # 用於突出顯示大專學歷人群 colors = [blue, red, green, yellow, orange] # 自定義顏色 # 將橫、縱坐標軸標準化處理,保證餅圖是一個正圓,否則為橢圓 plt.axes(aspect=equal) # plt.axes(aspect=1)#使x y軸比例相同 # 控制x軸和y軸的範圍 plt.xlim(0, 4) plt.ylim(0, 4) # 繪製餅圖 plt.pie(x=edu, # 繪圖數據 explode=explode, # 突出顯示大專人群 labels=labels, # 添加教育水平標籤 colors=colors, # 設置餅圖的自定義填充色 autopct=%.1f%%, # 設置百分比的格式,這裡保留一位小數 pctdistance=0.8, # 設置百分比標籤與圓心的距離 labeldistance=1.15, # 設置教育水平標籤與圓心的距離 startangle=180, # 設置餅圖的初始角度 radius=1.5, # 設置餅圖的半徑 counterclock=False, # 是否逆時針,這裡設置為順時針方向 wedgeprops={linewidth: 1.5, edgecolor: green}, # 設置餅圖內外邊界的屬性值 textprops={fontsize: 12, color: k}, # 設置文本標籤的屬性值 center=(1.8, 1.8), # 設置餅圖的原點 frame=1) # 是否顯示餅圖的圖框,這裡設置顯示 # 刪除x軸和y軸的刻度 plt.xticks(()) plt.yticks(()) # 添加圖標題 plt.title(芝麻信用失信用戶教育水平分布)edu = [0.2515,0.3724,0.3336,0.0368,0.0057]labels = [中專,大專,本科,碩士,其他]draw_pie(x=edu,labels)

推薦閱讀:

Python 設計模式初探
Python Generator漫談
Python環境下的8種簡單線性回歸演算法
python中 from . import ×××的那個點是表示當前包嗎?
Python爬蟲實戰(4):豆瓣小組話題數據採集—動態網頁

TAG:Python |