Matplotlib 绘制饼图解决文字重叠的方法
本文介绍在使用Matplotlib绘制饼图时,针对小比例数据导致标签重叠的问题,通过调整内部文字大小、外部标签字体及窗口尺寸来优化显示效果。
Matplotlib饼图文字重叠问题与优化思路
在使用Matplotlib生成饼图时,若部分数据占比过小,其标签往往因空间不足而相互覆盖,导致图表难以阅读。为解决这一显示问题,以下分享具体的优化思路与操作经验。
【未解决之前呈现的效果】

观察原始饼图可知,“其他”与“硕士”两个类别的占比极小,且其标签文字发生重叠,视觉效果不佳。针对此情况,可通过调整字体大小及整体布局尺寸来改善显示效果。
调整字体大小与窗口布局
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()
【新效果】

到此这篇关于Matplotlib 绘制饼图解决文字重叠的方法的文章就介绍到这了,更多相关Matplotlib 饼图文字重叠内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









