天天看點

Matplotlib - 餅圖、環形圖 pie() & 多重餅圖 subplots() 所有用法詳解

目錄

基本用法 

餅圖中突出顯示某部分

環形圖(空心餅圖)

多重餅圖,并添加分割線

相較散點圖和折線圖,柱狀圖、餅圖、箱線圖是另外 3 種資料分析常用的圖形,主要用于分析資料内部的分布狀态或分散狀态。餅圖主要用于檢視各分組資料在總資料中的占比。

Matplotlib 中繪制餅圖的函數為 pie () ,使用文法如下:

plt.pie(x, explode=None, labels=None, colors=None, 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 array 繪圖的資料;
explode array 餅圖中各個餅之間的間距;
labels string 圖例說明;
colors string 指定餅圖的填充色; 随機色
autopct string 百分比顯示格式; None
pctdistance 數值 設定百分比标簽與圓心的距離; 0.6
shadow bool 是否添加餅圖的陰影效果; FALSE
labeldistance 數值 設定各扇形标簽(圖例)與圓心的距離; 1.1
startangle 數值 設定餅圖的初始擺放角度;
radius 數值 設定餅圖的半徑大小; None
counterclock bool 是否讓餅圖按逆時針順序呈現; TRUE
wedgeprops string 設定餅圖内外邊界的屬性,如邊界線的粗細、顔色等; None
textprops string 設定餅圖中文本的屬性,如字型大小、顔色等; None
center 坐标 指定餅圖的中心點位置 原點(0, 0)
frame bool 是否要顯示餅圖背後的圖框,如果設定為True的話,需要同時控制圖框x軸、y軸的範圍和餅圖的中心位置; FALSE

基本用法 

import pandas as pd
import matplotlib.pyplot as plt

#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最後一行的資料畫餅圖
x = data[data['時間']==2018].iloc[:,1:].values.tolist()[0]

plt.figure(figsize=(5,5))#設定畫布的尺寸
plt.title('Examples of Pie Graph',fontsize=20)#标題,并設定字号大小
labels = 'Jay income','JJ income','Jolin income','Hannah income'#圖例
colors = ['hotpink','slateblue','goldenrod','olivedrab']

#startangle:從90度的位置開始畫第一個餅圖;autopct:顯示一位小數;其他參數使用預設值
plt.pie(x,labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')

plt.show()#顯示圖像
           
Matplotlib - 餅圖、環形圖 pie() & 多重餅圖 subplots() 所有用法詳解

餅圖中突出顯示某部分

 通過參數 explode 來實作:

import pandas as pd
import matplotlib.pyplot as plt

#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最後一行的資料畫餅圖
x = data[data['時間']==2018].iloc[:,1:].values.tolist()[0]

plt.figure(figsize=(5,5))#設定畫布的尺寸
plt.title('Examples of Pie Graph',fontsize=20)#标題,并設定字号大小
labels = 'Jay income','JJ income','Jolin income','Hannah income'#圖例
colors = ['hotpink','slateblue','goldenrod','olivedrab']
explodes = (0,0,0.1,0)#突出顯示Jolin income這部分的餅圖

plt.pie(x,explode = explodes, labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')

plt.show()#顯示圖像
           
Matplotlib - 餅圖、環形圖 pie() & 多重餅圖 subplots() 所有用法詳解

環形圖(空心餅圖)

import pandas as pd
import matplotlib.pyplot as plt

#讀取資料
datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
#取dataframe中的最後一行的資料畫餅圖
x = data[data['時間']==2018].iloc[:,1:].values.tolist()[0]
x_0 = [1,0,0,0]#用于顯示空心

plt.figure(figsize=(5,5))#設定畫布的尺寸
labels = 'Jay income','JJ income','Jolin income','Hannah income'#圖例
colors = ['hotpink','slateblue','goldenrod','olivedrab']

plt.pie(x  , radius=1.0,pctdistance = 0.8,labels=labels,colors = colors, startangle=90,autopct='%1.1f%%')
plt.pie(x_0, radius=0.6,colors = 'w')

plt.show()#顯示圖像
           

Matplotlib - 餅圖、環形圖 pie() & 多重餅圖 subplots() 所有用法詳解

多重餅圖,并添加分割線

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

datafile = u'D:\\pythondata\\learn\\matplotlib.xlsx'
data = pd.read_excel(datafile)
x1 = data[data['時間']==2005].iloc[:,1:].values.tolist()[0]#多重餅圖第一層資料
x2 = data[data['時間']==2010].iloc[:,1:].values.tolist()[0]#多重餅圖第二層資料

fig,ax = plt.subplots()
colors = ['hotpink','slateblue','goldenrod','olivedrab']
labels = 'Jay income','JJ income','Jolin income','Hannah income'#圖例
pie_1 = ax.pie(x1,startangle=90,autopct='%1.1f%%',radius=1.5,pctdistance = 0.9,colors=colors, labels=labels)
pie_2 = ax.pie(x2,startangle=90,autopct='%1.1f%%',radius=1.2,pctdistance = 0.6,colors=colors)

#添加多重餅圖的分割線
for pie_wedge in pie_1[0]:
    pie_wedge.set_edgecolor('black')
for pie_wedge in pie_2[0]:
    pie_wedge.set_edgecolor('black')

ax.set(aspect="equal")
plt.show()#顯示圖表
           
Matplotlib - 餅圖、環形圖 pie() & 多重餅圖 subplots() 所有用法詳解

繼續閱讀