餅圖(Pie Chart)是一種用于表示數據分類和相對大小的可視化圖形。在餅圖中,整個圓形代表數據的總和,而圓形內的各個扇形則代表不同的分類或類別,扇形的面積大小表示該類別在整體中所占的比例。餅圖通常用于展示數據的分布和比例關系,特別是當需要強調每個部分相對于整體的重要性時。在餅圖中,每個扇形的標簽通常會顯示該類別的名稱,而扇形的中心角或面積則表示該類別的數值或比例。
9.1默認餅圖
9.1.1圖像呈現
9.1.2 繪圖代碼
# 導入相關庫
import numpy as np # 導入numpy庫,用于處理數組和數值計算
import matplotlib.pyplot as plt # 導入matplotlib的繪圖模塊,用于可視化
# 定義一個列表,包含四個數值
numbers = [15, 30, 45, 10]
plt.figure(dpi=120)
# 使用pyplot的pie方法繪制餅圖。只需傳入每個組分(即列表中的每個數值)的比例即可。
# 這些數值會被自動歸一化,所以傳入的比例不需要預先計算。
plt.pie(numbers)#只需傳入每個組分比例即可plt.show()
9.1.3注意
這段代碼的主要功能是使用matplotlib庫繪制一個餅圖,其中四個組分的比例分別為15%、30%、45%和10%。餅圖用于展示數據的分布和比例關系,每個扇形的面積大小表示該組分在整體中所占的比例。
9.2餅圖添加組分比例、名稱
9.2.1圖像呈現
9.2.2繪圖代碼?
# 導入相關庫
import numpy as np # 導入numpy庫,用于處理數組和數值計算
import matplotlib.pyplot as plt # 導入matplotlib的繪圖模塊,用于可視化# 數據
labels = ['類別A', '類別B', '類別C', '類別D'] # 創建一個列表,包含餅圖中每個扇形的標簽
sizes = [15, 30, 45, 10]# 創建一個列表,包含餅圖中每個扇形的大小(通常是百分比或數值)# 創建餅圖plt.rcParams['font.sans-serif'] = ['SimHei'] # 設置默認字體為新創建的字體,這里指定為'SimHei',這是為了支持中文顯示
# 創建一個新的圖形窗口和一個子圖軸對象
fig1, ax1 = plt.subplots()
# 在子圖軸對象上繪制餅圖,傳入扇形大小列表和標簽列表
# autopct參數用于顯示每個扇形的百分比,'%1.1f%%'表示保留一位小數的百分比格式
# startangle參數設置餅圖的起始角度,這里設置為90度,即餅圖從正上方開始
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
# 設置軸的比例,使其成為一個圓形,而不是橢圓形
# 這是因為默認情況下,matplotlib的餅圖繪制在一個方形區域內,設置'equal'可以使x軸和y軸的比例相同,從而顯示為圓形
ax1.axis('equal')# 顯示圖形
plt.show()
9.2.3注意
這段代碼的主要目的是使用matplotlib庫繪制一個包含四個類別(A、B、C、D)的餅圖,每個類別的大小由sizes
列表定義,并且每個扇形的標簽由labels
列表定義。通過plt.rcParams['font.sans-serif'] = ['SimHei']
設置,確保了餅圖上的中文標簽能夠正確顯示。ax1.axis('equal')
確保了餅圖是一個完美的圓形,而不是橢圓形。
9.3餅圖設置起始角度
9.3.1圖像呈現
9.3.2繪圖代碼?
# 導入相關庫
import numpy as np # 導入numpy庫,用于處理數組和數值計算
import matplotlib.pyplot as plt # 導入matplotlib的繪圖模塊,用于可視化
plt.rcParams['font.sans-serif'] = ['SimHei'] # 設置默認字體為新創建的字體,這里指定為'SimHei',這是為了支持中文顯示
labels = '類別A', '類別B', '類別C', '類別D'# 定義餅圖的標簽
sizes = [15, 30, 45, 10]# 定義餅圖各部分的大小
explode1 = (0, 0.1, 0, 0)# 定義第一個餅圖的突出顯示參數,這里將'類別B'部分突出顯示
explode2 = (0, 0, 0.1, 0)# 定義第二個餅圖的突出顯示參數,這里將'類別C'部分突出顯示
plt.figure(figsize=(10, 10), dpi=120)# 創建一個新的圖形窗口,設置其大小為10x10英寸,DPI為120
plt.subplot(121)# 在圖形窗口上創建一個子圖,位置為1行2列的第1個位置
# 繪制第一個餅圖,使用sizes作為各部分的大小,labels作為標簽,autopct顯示百分比,startangle設置起始角度為90°
plt.pie(sizes,labels=labels,autopct='%1.1f%%',startangle=90)
# 設置第一個餅圖的標題
plt.title('Startangle = 90°')
# 在圖形窗口上創建另一個子圖,位置為1行2列的第2個位置
plt.subplot(122)
# 繪制第二個餅圖,與第一個餅圖類似,但起始角度為180°并突出顯示'類別C'
plt.pie(sizes,labels=labels,autopct='%1.1f%%',startangle=180 )
# 設置第二個餅圖的標題
plt.title('Startangle = 180°')
# 顯示圖形窗口
plt.show()
9.3.3注意
explode
參數用于突出顯示餅圖的某個部分。例如,explode1
中的(0, 0.1, 0, 0)
意味著'類別B'部分將被突出顯示,與其他部分之間有一個0.1單位的間隔。startangle
參數用于設置餅圖的起始角度。在這里,第一個餅圖從90°開始,第二個餅圖從180°開始。plt.rcParams['font.sans-serif'] = ['SimHei']
這行代碼是為了確保中文字符在圖形中能夠正確顯示。這對于某些沒有預裝中文字體的環境來說是必要的。
9.4餅圖某組分爆炸顯示?
9.4.1圖像呈現
9.4.2繪圖代碼?
# 導入相關庫
import numpy as np # 導入numpy庫,用于處理數組和數值計算
import matplotlib.pyplot as plt # 導入matplotlib的繪圖模塊,用于可視化
plt.rcParams['font.sans-serif'] = ['SimHei'] # 設置默認字體為新創建的字體,這里指定為'SimHei',這是為了支持中文顯示
labels = '類別A', '類別B', '類別C', '類別D'# 定義餅圖的標簽
sizes = [15, 30, 45, 10]# 定義餅圖各部分的大小
explode1 = (0, 0.1, 0, 0)# 定義第一個餅圖的突出顯示參數,這里將'類別B'部分突出顯示
explode2 = (0, 0, 0.1, 0)# 定義第二個餅圖的突出顯示參數,這里將'類別C'部分突出顯示
plt.figure(figsize=(10, 10), dpi=120)# 創建一個新的圖形窗口,設置其大小為10x10英寸,DPI為120
plt.subplot(121)# 在圖形窗口上創建一個子圖,位置為1行2列的第1個位置
# 繪制第一個餅圖,使用sizes作為各部分的大小,labels作為標簽,autopct顯示百分比,startangle設置起始角度為90°
# explode參數用于設置爆炸效果,這里使用了之前定義的explode1
plt.pie(sizes,explode=explode1, labels=labels,autopct='%1.1f%%',startangle=90)#開啟爆炸顯示
# 在圖形窗口上創建另一個子圖,位置為1行2列的第2個位置
plt.subplot(122)
# 繪制第二個餅圖,與第一個餅圖類似,但起始角度為180°并使用explode2作為爆炸效果參數
plt.pie(sizes,explode=explode2,labels=labels,autopct='%1.1f%%',startangle=180) #開啟爆炸顯示# 顯示圖形窗口
plt.show()
9.4.3注意
在這段代碼中,兩個餅圖分別展示了相同的數據,但起始角度和突出顯示的部分不同。explode
參數用于設置突出顯示的效果,通過給每個部分分配一個值(通常是0或正數),可以使對應部分稍微偏離餅圖的中心。在這個例子中,類別B
在第一個餅圖中被突出顯示,而類別C
在第二個餅圖中被突出顯示。startangle
參數用于設置餅圖的起始角度,使得餅圖從特定的角度開始繪制。
9.5餅圖設置文字屬性、圖例
9.5.1圖像呈現
9.5.2繪圖代碼
# 導入相關庫
import numpy as np # 導入numpy庫,用于處理數組和數值計算
import matplotlib.pyplot as plt # 導入matplotlib的繪圖模塊,用于可視化
plt.rcParams['font.sans-serif'] = ['SimHei'] # 設置默認字體為新創建的字體,這里指定為'SimHei',這是為了支持中文顯示
labels = '類別A', '類別B', '類別C', '類別D'# 定義餅圖的標簽
sizes = [15, 30, 45, 10]# 定義餅圖各部分的大小,這些值通常表示各個部分在整體中所占的比例
# 定義餅圖的爆炸效果參數,這里將'類別B'部分稍微突出顯示
# 爆炸效果意味著該部分會被推開一點,與其他部分之間有一個小的間隔
explode = (0, 0.05, 0, 0)
# 創建一個新的圖形窗口,并設置其大小為7x7英寸,DPI(每英寸的點數)為120
plt.figure(figsize=(7, 7), dpi=120)
# 繪制餅圖,使用sizes作為各部分的大小,autopct顯示百分比,textprops設置文本屬性(這里為顏色),
# explode設置爆炸效果,startangle設置起始角度為90°
plt.pie(sizes,autopct='%1.1f%%',textprops={'color': "w"}, explode=explode,startangle=90)
# 添加圖例,將labels作為圖例的標簽,bbox_to_anchor設置圖例的位置,title設置圖例的標題為"分類"
plt.legend(labels, bbox_to_anchor=(1., .95), title="分類") #添加圖例
# 顯示圖形窗口
plt.show()
9.5.3注意
這段代碼創建了一個具有四個部分的餅圖,其中'類別B'部分被突出顯示。餅圖的起始角度設置為90°,意味著餅圖從垂直方向開始繪制。此外,圖例被添加到圖形的右上角,標題為"分類",并且設置了字體以支持中文顯示。autopct
參數用于在餅圖的每個部分旁邊顯示其所占的百分比,而textprops
參數則用于設置這些百分比文本的屬性,如顏色。