Python中使用matplotlib畫餅圖詳解
阿新 • • 發佈:2019-01-06
本文來自本人做的一個案例,經過比較,個人感覺Python中的matplotlib要比excel、R語言中ggplot2中畫的餅圖好看。
- 解決畫圖中的中文亂碼問題
- 引數詳解
- 儲存結果
解決畫圖中的中文亂碼問題
為防止中文亂碼問題,在匯入pyplot之後,可以加一句,使用如下方法:
#-*- coding: utf-8 -*-
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解決中文亂碼
引數詳解
plt.figure(figsize=(6,9)) #調節圖形大小
labels = [u'大型',u'中型',u'小型',u'微型'] #定義標籤
sizes = [46,253,321,66] #每塊值
colors = ['red','yellowgreen','lightskyblue','yellow'] #每塊顏色定義
explode = (0,0,0,0) #將某一塊分割出來,值越大分割出的間隙越大
patches,text1,text2 = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
autopct = '%3.2f%%' , #數值保留固定小數位
shadow = False, #無陰影設定
startangle =90, #逆時針起始角度設定
pctdistance = 0.6) #數值距圓心半徑倍數距離
#patches餅圖的返回值,texts1餅圖外label的文字,texts2餅圖內部的文字
# x,y軸刻度設定一致,保證餅圖為圓形
plt.axis('equal')
plt.show()
分割出來
plt.figure(figsize=(6,9)) #調節圖形大小
labels = [u'大型' ,u'中型',u'小型',u'微型'] #定義標籤
sizes = [46,253,321,66] #每塊值
colors = ['red','yellowgreen','lightskyblue','yellow'] #每塊顏色定義
explode = (0,0,0.02,0) #將某一塊分割出來,值越大分割出的間隙越大
patches,text1,text2 = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
autopct = '%3.2f%%', #數值保留固定小數位
shadow = False, #無陰影設定
startangle =90, #逆時針起始角度設定
pctdistance = 0.6) #數值距圓心半徑倍數的距離
#patches餅圖的返回值,texts1餅圖外label的文字,texts2餅圖內部的文字
# x,y軸刻度設定一致,保證餅圖為圓形
plt.axis('equal')
plt.show()
分割出來且有陰影
將引數explode = (0,0,0.03,0),shadow = True
全部分割出來
將引數explode = (0.01,0.01,0.005,0.025)
全部分割出來
增加圖例
plt.figure(figsize=(6,9)) #調節圖形大小
labels = [u'大型',u'中型',u'小型',u'微型'] #定義標籤
sizes = [46,253,321,66] #每塊值
colors = ['red','yellowgreen','lightskyblue','yellow'] #每塊顏色定義
explode = (0,0,0.02,0) #將某一塊分割出來,值越大分割出的間隙越大
patches,text1,text2 = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
labeldistance = 1.2,#圖例距圓心半徑倍距離
autopct = '%3.2f%%', #數值保留固定小數位
shadow = False, #無陰影設定
startangle =90, #逆時針起始角度設定
pctdistance = 0.6) #數值距圓心半徑倍數距離
#patches餅圖的返回值,texts1餅圖外label的文字,texts2餅圖內部文字
# x,y軸刻度設定一致,保證餅圖為圓形
plt.axis('equal')
plt.legend()
plt.show()
儲存結果
plt.axis('equal')
plt.legend()
plt.savefig('d:/Python3.6.1/here/p2.png') #一定放在plt.show()之前
plt.show()
注意,plt.savefig()一定放在plt.show()之前,否則無法儲存