天天看點

Matplotlib 繪制餅圖解決文字重疊

在使用Matplotlib 繪制餅圖的時候有些時候一些資料的比列太小在餅圖呈現的效果不明顯 很容易被覆寫,為了解決這個問題以下就是我個人的心得。

【未解決之前呈現的效果】

Matplotlib 繪制餅圖解決文字重疊

可以看到這個餅狀圖其他和碩士這2個部分占比很小而且比例互相覆寫,這讓人看起來不舒服,是以針對這個問題我們可以調整下字型大小以及布局大小。

1.設定字型的大小

patches,l_text,p_text=plt.pie(values, spaces, labels, colors, '%.1f%%', shadow=True, radius=1, startangle=90)
# l_text是餅圖對着文字大小,p_text是餅圖内文字大小
for t in p_text:
    t.set_size(5)

for t in l_text:
    t.set_size(6)      

2.防止标簽重疊,可以将視窗設定的大一些

# 防止标簽重疊,可以将視窗設定的大一些
plt.figure(figsize=(20, 6.5))      

【源代碼】

import matplotlib.pyplot as plt

# 解決亂碼
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文标簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負号


# 值清單
values = [0.2515,0.3724,0.3336,0.0368,0.0057]

# 扇形之間的間距:設定為0就是各部分挨在一起,如果設定不為0就是突顯該部分
spaces = [0, 0, 0, 0, 0]

# 标簽清單
labels = ['中專','大專','大學','碩士','其他']

# 顔色清單
colors = ['dodgerblue', 'orangered', 'limegreen', 'cyan', 'gold']

# 防止标簽重疊,可以将視窗設定的大一些
plt.figure(figsize=(20, 6.5))

# 将橫、縱坐标軸标準化處理,保證餅圖是一個正圓,否則為橢圓
plt.axis('equal')

# 繪圖
patches,l_text,p_text=plt.pie(values, spaces, labels, colors, '%.1f%%', shadow=True, radius=1, startangle=90)

# 給圖像加上圖例
plt.legend(loc='upper left')

# 設定餅圖内文字大小
for t in p_text:
    t.set_size(6)

for t in l_text:
    t.set_size(9)

# 顯示
plt.show()