Seaborn 餅圖
本教程將討論使用 Matplotlib
的 pie 屬性和 Seaborn 的顏色托盤建立餅圖。
在 Seaborn 中建立餅圖
餅圖在包含不同顏色切片的圓形圖中表示資料。餅圖中每個切片的大小取決於數值資料的比例。
餅圖用於研究數值資料的比例。它顯示了資料佔整體的百分比。如果一個數量在給定資料中具有較高的數值比例,則其切片大小和百分比將大於餅圖中存在的其他切片。
如果我們想在 Python 中使用 seaborn 建立餅圖,我們必須使用 Matplotlib
的 pie 屬性和 Seaborn 的調色盤。我們必須傳遞輸入資料和調色盤來建立餅圖。
例如,讓我們建立一些隨機資料的餅圖。請參閱下面的程式碼。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
colors = sns.color_palette('pastel')
plt.pie(data, colors = colors)
plt.show()
輸出:
在上面的程式碼中,我們使用了 Seaborn 的柔和調色盤,但是我們可以隨意更改調色盤。Seaborn 有很多可用的顏色托盤選項,例如深、靜音、色盲、明亮和黑暗。
我們必須在 color_palette()
屬性中將顏色托盤作為字串傳遞。pie 屬性有很多我們可以更改的引數,例如使用包含標籤名稱的字串陣列向餅圖新增標籤。
我們還可以使用 autopct
引數在切片內新增文字。例如,讓我們通過新增標籤、更改調色盤以及在每個切片內新增切片百分比來使上面的餅圖更具可讀性。請參閱下面的程式碼。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data, labels=labels,colors = colors, autopct = '%0.0f%%')
plt.show()
輸出:
我們可以在每個切片內新增任何文字,但在此示例中我們新增了每個資料的百分比。我們還可以設定每個切片內文字的距離。預設情況下,文字距離為 0.6,但我們可以使用 pctdistance
引數更改它。
我們還可以使用 labeldistance
引數設定標籤距離。預設情況下,標籤距離值為 1.1,但我們可以將其更改為任何浮點值。如果我們想在每個切片之間建立空間以便有一些偏移,我們可以使用 explode 引數來做到這一點。
爆炸引數的值應該是一個與輸入資料長度相同的陣列。例如,讓我們在上面的餅圖的每個切片之間新增一些偏移量。請參閱下面的程式碼。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3,0.02,0.02,0.02,0.02]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data, labels=labels,colors = colors, autopct = '%0.0f%%', explode = explode)
plt.show()
輸出:
我們還可以使用 shadow 引數在餅圖下方繪製陰影。預設情況下,shadow 引數設定為 false,但我們可以將其設定為 true。預設情況下,切片一將從 0 度開始,但我們可以使用 startangle
引數並將其值設定為任何浮點值來更改它。
預設情況下,切片將從 x 軸開始並遵循逆時針方向,但我們可以通過將引數值設定為 false 來將其設定為順時針。我們還可以使用 textprops
引數設定餅圖中顯示的文字的屬性,例如字型大小或顏色。
我們還可以使用 wedgeprops
引數設定楔形或切片的屬性,例如它們的線寬。預設情況下,框架設定為 false,這就是我們看不到框架的原因,但我們可以使用 frame 引數將其設定為 true。
預設情況下,餅圖中心為 0,但我們可以使用 center 引數將其更改為任何值。我們還可以使用 rotatelabel
引數沿切片方向旋轉標籤並將其值設定為 true。
例如,讓我們改變上面提到的餅圖的引數。請參閱下面的程式碼。
import matplotlib.pyplot as plt
import seaborn as sns
data = [35, 21, 29, 39, 11]
explode = [0.3,0.02,0.02,0.02,0.02]
labels = ['slice 1', 'slice 2', 'slice 3', 'slice 4', 'slice 5']
colors = sns.color_palette('bright')
plt.pie(data,
labels=labels,
colors = colors,
autopct = '%0.0f%%',
explode = explode,
shadow = 'True',
startangle = 90,
textprops = {'color': 'Green','fontsize':16},
wedgeprops = {'linewidth': 6},
frame = 'true' ,
center = (0.1,0.1),
rotatelabels = 'true')
plt.show()
輸出: