如何设置饼图中标签的大小

65 投票
2 回答
121054 浏览
提问于 2025-04-16 23:42

我想在Python的饼图上使用小一点的标签,这样能让它更清晰易读。下面是我的代码:

import matplotlib.pyplot as plt

frac=[1.40 , 10.86 , 19.31 , 4.02 , 1.43 , 2.66 , 4.70 , 0.70 , 0.13 , 1.48, 32.96 , 1.11 , 13.30 , 5.86]
labels=['HO0900344', 'HO0900331', 'HO0900332', 'HO0900354', 
'HO0900358', 'HO0900374', 'HO0900372', 'HO0900373', 
'HO0900371', 'HO0900370', 'HO0900369', 'HO0900356', 
'HO0900353', 'HO0900343']

fig = plt.figure(1, figsize=(6,6))
ax = fig.add_subplot(111)
ax.axis('equal')
colors=('b', 'g', 'r', 'c', 'm', 'y', 'burlywood', 'w')
ax.pie(frac,colors=colors ,labels=labels, autopct='%1.1f%%')
plt.show()

2 个回答

161

改变饼图字体大小最简单的方法就是直接在 pie() 函数中使用 textprops 这个参数。你可以像下面这样在代码中添加它:

ax.pie(frac, colors=colors ,labels=labels, 
       autopct='%1.1f%%', textprops={'fontsize': 14})

这样你只需要传入一个字典,里面写上你想要的字体大小(比如说,14)。这样就不用去折腾 rcParams 或者函数返回的值了。

73

有几种方法可以改变标签的字体大小。

你可以动态地改变设置。在你的脚本开头添加以下内容:

import matplotlib as mpl
mpl.rcParams['font.size'] = 9.0

或者,你也可以在标签创建后再修改它们。当你调用ax.pie时,它会返回一个元组,里面包含(补丁、文本、自动文本)。举个例子,可以把你最后几行代码修改成这样:

patches, texts, autotexts = ax.pie(frac, colors=colors, labels=labels, autopct='%1.1f%%')
texts[0].set_fontsize(4)
plt.show()

撰写回答