可靠地避免图例与 matplotlib 饼图中的其他元素重叠

问题描述 投票:0回答:1

我正在制作一系列饼图,并且正在寻找一种自动放置图例的方法,以避免与其他元素重叠(而不仅仅是对每个单独的图进行手动干预)。例如:

fake_df = pd.DataFrame([70, 15, 15],
                   columns=['category'],
                   index=['Category Name 1', 'Category Name 2', 'Category Name 3'])
fake_df.plot.pie(y='category',
                 labels=None, 
                 autopct="%1.0f%%",
                 pctdistance=1.2,
)

我知道在这种情况下,我可以明确地将图例分配给“左上角”,或者以其他方式手动操纵图例或百分比的位置以避免重叠,但这对于百分比显示的情况不起作用例如左上角:

fake_df = pd.DataFrame([71, 15, 14],
                       columns=['category'],
                       index=['Category Name 1', 'Category Name 2', 'Category Name 3'])
fake_df.plot.pie(y='category',
                 labels=None, 
                 autopct="%1.0f%%",
                 pctdistance=1.2,
)
plt.legend(['Category Name 1', 'Category Name 2', 'Category Name 3'], loc='upper left')

由于我会自动制作大量饼图,其中没有一个始终有效的图例放置位置,而且我不知道潜在的重叠位置在哪里,所以我需要一个通用的解决方案,能够可靠地将图例放置在这样的位置它避免了重叠。这可能吗?

python pandas matplotlib pie-chart legend-properties
1个回答
0
投票
fake_df = pd.DataFrame([70, 15, 15],
                   columns=['category'],
                   index=['Category Name 1', 'Category Name 2', 'Category Name 3'])

ax = fake_df.plot.pie(y='category',
                 labels=None, 
                 autopct="%1.0f%%",
                 pctdistance=1.2,
)

plt.legend(labels=fake_df.index, bbox_to_anchor=(1.05, 1), loc='upper left')
© www.soinside.com 2019 - 2024. All rights reserved.