使用Matplotlib在Python中建立環形圖


環形圖是一種圓形圖表,以圓形的方式顯示資料的相對錶示。環形圖和餅圖看起來相似,但環形圖的中心有一個空洞,而餅圖則沒有。可以使用Matplotlib為包含不同比例的各種分組的資料集建立環形圖。在本文中,我們將使用Matplotlib建立一個環形圖。

演算法

可以使用matplotlib庫提供的方法繪製Matplotlib中的環形圖。我們可以按照以下演算法在Matplotlib中製作環形圖。

  • 匯入必要的庫,包括Matplotlib。

  • 定義要繪製的資料,包括標籤和大小。

  • 使用plt.subplots()建立一個圖形和軸物件。

  • 使用plt.subplots()的subplot_kw引數將繪圖的縱橫比設定為相等。

  • 使用ax.pie()的startangle引數設定繪圖的起始角度。

  • 使用ax.pie()建立環形圖,將大小作為資料傳遞,並將標籤作為labels引數傳遞。

  • 透過使用plt.Circle()新增內圓,使用ax.legend()新增圖例,使用plt.setp()更改字型大小和粗細,以及使用ax.set_title()設定圖表標題來自定義圖表。

  • 使用plt.show()顯示圖表。

安裝Matplotlib

Matplotlib是Python中的一個數據視覺化庫,允許你建立各種圖表。要安裝它,你可以在命令列或終端中鍵入以下命令。

Pip install matplotlib

建立虛擬資料

要建立環形圖,我們需要虛擬資料,可以使用Python中的matplotlib進行視覺化。我們建立一個標籤列表和一個大小列表,其中包含每個標籤類別的相對大小。

labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]

建立基本的環形圖

我們將使用plt.pie()函式建立環形圖。此函式將大小列表作為引數,並建立一個表示每個類別的環形圖。

語法

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, normalize=None, *, data=None)

傳遞給plt.pie()函式的引數具有其特定的含義,如下所述:

  • x - 以值序列的形式繪製的資料。

  • explode - 一系列值,指定每個扇區的半徑偏移分數。

  • labels - 一系列字串,用作每個扇區的標籤。

  • colors - 一系列顏色,用於每個扇區。

  • autopct - 用於格式化百分比文字標籤的格式字串。如果為None,則不顯示標籤。

  • pctdistance - 從餅圖中心到繪製百分比標籤的距離。

  • shadow - 一個布林值,指示是否在餅圖下方繪製陰影。

  • startangle - 以度為單位,開始繪製第一個扇區的角度。

  • radius - 餅圖的半徑。如果為None,則半徑設定為1。

  • counterclock - 一個布林值,指示是逆時針繪製扇區還是順時針繪製扇區。

  • wedgeprops - 傳遞給用於建立每個扇區的Wedge類的關鍵字引數字典。

  • textprops - 傳遞給用於建立文字標籤的Text類的關鍵字引數字典。

  • center - 餅圖的中心,作為(x, y)座標的元組。

  • frame - 一個布林值,指示是否在餅圖周圍繪製框架。

  • rotatelabels - 一個布林值,指示是否旋轉文字標籤。

  • normalize - 一個布林值,指示是否在繪圖前將資料標準化到100%。

示例

在下面的示例中,我們使用標籤和大小列表來建立一個環形圖,表示每個標籤類別。我們首先使用plt.subplots()函式建立一個圖形和軸物件。我們將軸的縱橫比設定為“相等”,以確保圖表是圓形的。然後,我們使用ax.pie()函式建立一個餅圖,楔形寬度為0.5,起始角度為-40。

# Data
import matplotlib.pyplot as plt
labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]

# Plot
fig, ax = plt.subplots(figsize=(10, 6), subplot_kw=dict(aspect="equal"))

wedges, texts = ax.pie(sizes, wedgeprops=dict(width=0.5), startangle=-40)

# Inner circle
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)

# Add labels
ax.legend(wedges, labels,
      title="Fruits",
      loc="center left",
      bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(texts, size=12, weight="bold")

ax.set_title("Fruit Distribution")

plt.show()

輸出

自定義環形圖

我們可以透過更改圖表中的表示顏色、字型更改、軸標籤更改等來進一步自定義環形圖。

示例

要更改圖表的顏色,我們可以將顏色列表傳遞給ax.pie函式的wedge props引數。在下面的示例中,我們將之前的環形圖顏色更改為紅色、綠色、藍色和橙色。

import matplotlib.pyplot as plt
# Data
labels = ['Apples', 'Bananas', 'Grapes', 'Oranges']
sizes = [25, 30, 15, 30]
colors = ['red', 'green', 'blue', 'orange']

# Plot
fig, ax = plt.subplots(figsize=(10, 6), subplot_kw=dict(aspect="equal"))

wedges, texts = ax.pie(sizes, wedgeprops=dict(width=0.5, edgecolor='w'), startangle=-40, colors=colors)

# Inner circle
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)

# Add labels
ax.legend(wedges, labels,
      title="Fruits",
      loc="center left",
      bbox_to_anchor=(1, 0, 0.5, 1))

plt.setp(texts, size=12, weight="bold")

ax.set_title("Fruit Distribution")

plt.show()

輸出

結論

在本文中,我們討論瞭如何使用matplotlib建立任何資料的環形圖表示,以及環形圖和餅圖之間的基本區別。Matplotlib是一個數據視覺化庫,用於以各種圖表的形式顯示資料。環形圖也可以根據特定的資料視覺化需求進行自定義。

更新於:2023年7月10日

2K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.