【发布时间】:2020-02-14 23:50:49
【问题描述】:
以下示例代码将生成我将用作示例的圆环图:
import matplotlib.pyplot as plt
%matplotlib inline
# Following should supposedly set the font correctly:
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['Muli'] + plt.rcParams['font.sans-serif']
plt.rcParams['font.weight'] = 'extra bold'
size_of_groups=[12,11,30,0.3]
colors = ['#a1daaa','#bbbbb4','#444511','#1afff2']
import matplotlib as mpl
mpl.rcParams['text.color'] = '#273859'
# Create a pieplot
my_pie,texts,_ = plt.pie(size_of_groups,radius = 1.2,colors=colors,autopct="%.1f%%",
textprops = {'color':'w',
'size':15 #, 'weight':"extra bold"
}, pctdistance=0.75, labeldistance=0.7) #pctdistance and labeldistance change label positions.
labels=['High','Low','Normal','NA']
plt.legend(my_pie,labels,loc='lower center',ncol=2,bbox_to_anchor=(0.5, -0.2))
plt.setp(my_pie, width=0.6, edgecolor='white')
fig1 = plt.gcf()
fig1.show()
上面的输出是这样的:
大多数情况下,这很棒。最后我得到了一个漂亮的甜甜圈图!
但最后一件事需要巧妙处理 - 当圆环图的部分非常小(如 0.6%)时,我需要将标签移出图表,并可能改为黑色。
我设法使用 plt.text 为条形图做类似的事情,但我认为饼图根本不可行。我认为以前肯定有人解决过类似的问题,但我不能轻易提出任何体面的解决方案。
【问题讨论】:
-
This post 提出了一些替代方案来解决这个问题。
标签: python matplotlib