目錄
基本用法
餅圖中突出顯示某部分
環形圖(空心餅圖)
多重餅圖,并添加分割線
相較散點圖和折線圖,柱狀圖、餅圖、箱線圖是另外 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()#顯示圖像
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP31UMJpXT0kFRNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5MzM2ADOwkTMwIjMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
餅圖中突出顯示某部分
通過參數 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()#顯示圖像
環形圖(空心餅圖)
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()#顯示圖表