如何避免在Matplotlib甜甜圈图上重叠的楔形标签?

3

我有以下甜甜圈图表:

如您在图片中所见,当楔形块的百分比低于3%时,百分比标签开始与相邻块重叠。

问题:

如何在保留图表上的百分比标签的同时减轻或避免此问题?

enter image description here

最小可重现示例:

import pandas as pd
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 10))

data = {"Category":["Housing","Groceries","Subscriptions","Rectreation","Other","Health","Transport"],
"Amount": [918.39, 546.20, 289.62, 60.59, 39.74, 19.99, 19.60]}

colors = ["#67b7dc", "#6794dc", "#6771dc" , "#8067dc" , "#a367dc","#67b7dc","#6794dc","#6771dc"]
df = pd.DataFrame(data)

ax.pie(df["Amount"],
            labels=df["Category"],
            autopct='%1.1f%%',
            wedgeprops=dict(edgecolor=  "white", linewidth= 1.5, width=0.3),
            startangle=270,
            colors = colors,
            pctdistance=0.85,
            labeldistance=1.2,
            textprops={'color':"w", 'fontsize': 14} )

ax.axis('equal') 
ax.legend(loc = 'center', prop={'size': 15})

plt.show()

1
你看过matplotlib文档中的这个例子吗?它使用自定义注释(在页面底部),并将标签放置在百分比旁边,使读者更容易将文本标签与每个“楔形图”相关联。 - Asmus
谢谢您的回复!是的,我看过那个页面了,问题在于任务有非常具体的设计指南,可悲的是我不能改变百分比所在的位置...最终我转向了Plotly,它通过将标签放置在径向上自动处理了这些问题!我相信在Matplotlib中也有一种方法可以做到这一点,但这可能不是可行的替代方案。 - Geom
1个回答

0

看起来在处理静态图像时,似乎没有什么神奇的方法可以避免这种情况。我最终使用了Plotly,因为它允许你悬停在小楔形图上并查看百分比,即使百分比太小而无法显示。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接