colors = ['yellowgreen', 'red', 'gold', 'lightskyblue', 'white',
    'lightcoral', 'blue', 'pink', 'darkgreen', 'yellow', 'grey', 'violet',
    'magenta', 'cyan']
porcent = 100.0 * y / y.sum()
patches, texts = plt.pie(y, colors=colors, startangle=90, radius=1.2)
labels = ['{0} - {1:1.2f} %'.format(i, j) for i, j in zip(x, porcent)]
sort_legend = True
if sort_legend:
    patches, labels, dummy = zip(*sorted(zip(patches, labels, y), key=lambda
        x: x[2], reverse=True))
plt.legend(patches, labels, loc='left center', bbox_to_anchor=(-0.1, 1.0),
    fontsize=8)
plt.savefig('piechart.png', bbox_inches='tight')
How to avoid overlapping of labels & autopct in a matplotlib pie chart?