Python 调出饼图matplotlib中重叠的标签

Python 调出饼图matplotlib中重叠的标签,python,matplotlib,pie-chart,Python,Matplotlib,Pie Chart,我有需要绘制的数据,但标签重叠。我不知道如何使标签正确地可视化。这是我的密码: items = [['#024260', 'LOA', '2.805757227344012e-06'], ['#8d5af7', 'MF', '4.971738496305904e-05'], ['#e34045', 'BND', '9.983376434507252e-05'], ['#f19437', 'CASH', '0.00019645638525306

我有需要绘制的数据,但标签重叠。我不知道如何使标签正确地可视化。这是我的密码:

items = [['#024260', 'LOA', '2.805757227344012e-06'],
         ['#8d5af7', 'MF', '4.971738496305904e-05'],
         ['#e34045', 'BND', '9.983376434507252e-05'],
         ['#f19437', 'CASH', '0.00019645638525306184'],
         ['#17B5C9', 'ETF', '0.000709395584554212'],
         ['#f85e54', 'STP', '0.0013873917477135414'],
         ['#88124F', 'PRF', '0.0015986586552010882'],
         ['#ff3c83', 'UNT', '0.003807557052557499'],
         ['#f8da00', 'DR', '0.008560450377422474'],
         ['#4ce068', 'EQS', '0.972791941583156']]
可以看到,第一列是颜色代码。第2列是标记器,第3列是与字符串格式的标记器对应的值

items = np.array(sorted(items, key=lambda x: x[-1]))
#items = items[items[:,2].argsort()]
labels = items[:,1]
data = (items[:,2].astype(np.float) * 100).round(2)
#chartnum += 1
#path = plot_path + f"/chart-pie_{chartnum}.pdf"

mask = (data > 0) & (data <= 5)
explode = np.where(mask, 0.3,0)
labels = ['%s, %1.2f %%' % (l, float(s)) for l, s in zip(labels, data)]

fig, ax = plt.subplots(figsize=(9, 3))
#plt.gca().axis("equal")
explode = np.where(values > 0, 0.2, 0)
idx = np.argmax(data > 0)
#np.random.shuffle(data[idx:])
patches,texts = pie = ax.pie(data[idx:], colors=items[:,0][idx:],
    labeldistance=1.2, pctdistance=1.2, 
                        labels=list(map(lambda x: x, items[idx:,1])), startangle=angle,
                      radius=3,explode=explode[idx:])
bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)
arrowprops=dict(arrowstyle="-",connectionstyle="angle,angleA=0,angleB=90")
kw = dict(xycoords='data',textcoords='data',arrowprops=arrowprops, 
          bbox=bbox_props, zorder=0, va="center")

for i, p in enumerate(patches):
    ang = (p.theta2 - p.theta1)/2.+p.theta1
    y = np.sin(ang/180.*np.pi)
    x = 1.35*np.sign(np.cos(ang/180.*np.pi))
    plt.gca().annotate(str(1+i), xy=(0, 0), xytext=( x, y), **kw )
plt.legend(pie[0],labels, loc="center left", bbox_to_anchor=(2.5,0,0.5,1))
#ax.legend(patches,labels[idx:], bbox_to_anchor=(2.5,0,0.5,1), loc='center left',frameon=False)
#plt.tight_layout()[![enter image description here][1]][1]
items=np.array(已排序(items,key=lambda x:x[-1]))
#items=items[items[:,2].argsort()]
标签=项目[:,1]
数据=(项目[:,2]。astype(np.float)*100)。四舍五入(2)
#chartnum+=1
#path=plot_path+f“/chart-pie{chartnum}.pdf”
掩码=(数据>0)和(数据0,0.2,0)
idx=np.argmax(数据>0)
#np.random.shuffle(数据[idx:])
补丁,text=pie=ax.pie(数据[idx:],颜色=项[:,0][idx:],
labeldistance=1.2,pctdistance=1.2,
标签=列表(地图(λx:x,项[idx:,1])),星形缠结=角度,
半径=3,分解=分解[idx:]
bbox_props=dict(boxstyle=“square,pad=0.3”,fc=“w”,ec=“k”,lw=0.72)
arrowprops=dict(arrowstyle=“-”,connectionstyle=“角度,角度A=0,角度B=90”)
kw=dict(xycoords='data',textcoords='data',arrowprops=arrowprops,
bbox=bbox_道具,zorder=0,va=“中心”)
对于枚举中的i,p(补丁):
ang=(p.theta2-p.theta1)/2.+p.theta1
y=np.sin(ang/180.*np.pi)
x=1.35*np.符号(np.cos(ang/180.*np.pi))
plt.gca().annotate(str(1+i),xy=(0,0),xytext=(x,y),**kw)
plt.图例(饼图[0],标签,loc=“左中”,bbox\u to\u锚=(2.5,0.5,1))
#ax.图例(补丁、标签[idx:],bbox_至_锚=(2.5,0,0.5,1),loc='中间偏左',frameon=False)
#plt.tight_layout()[![在此处输入图像描述][1][1]
正如你所看到的,我很难在没有重叠的情况下正确显示标签。如何解决此问题?谢谢