How to avoid overlapping of labels & autopct in a Matplotlib pie chart?

MatplotlibServer Side ProgrammingProgramming

To avoid overlapping of labels and autopct in a matplotlib pie chart, we can follow label as a legend, using legend() method.


  • Initialize a variable n=20 to get a number of sections in a pie chart.

  • Create slices and activities using numpy.

  • Create random colors using hexadecimal alphabets, in the range of 20.

  • Use pie() method to plot a pie chart with slices, colors, and slices data points as a label.

  • Make a list of labels (those are overlapped using autopct).

  • Use legend() method to avoid overlapping of labels and autopct.

  • To display the figure, use show() method.


import random
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
n = 20
slices = np.arange(n)
activities = np.arange(n)
colors = ["#" + ''.join([random.choice('0123456789ABCDEF') for j in range(6)])
for i in range(n)]

patches, texts = plt.pie(slices,

labels = ['{0} - {1:1.2f} %'.format(i, j) for i, j in zip(activities,
plt.legend(patches, labels, loc='center left', bbox_to_anchor=(-0.35, .5), fontsize=8)


Published on 08-May-2021 09:09:17