1. 程式人生 > >Python中使用matplotlib畫餅圖詳解

Python中使用matplotlib畫餅圖詳解

本文來自本人做的一個案例,經過比較,個人感覺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()之前,否則無法儲存