Matplotlib: увеличивайте, заполняйте и центрируйте легенду в сложенных круговых диаграммах

У меня есть блок кода, который создает вертикально выровненные круговые диаграммы:

import matplotlib.pyplot as plt
import numpy

labels=['Ph 1', 'Ph 2','Ph 3']
colors = ['darkred', 'gold', 'green']
explode = (0.1, 0.1, 0.1)
event1=numpy.array([93.90,0.45,5.65])
event2=numpy.array([82.96,0.86,16.17])
event3=numpy.array([69.25,1.20,29.55])
fig1, (ax1,ax2,ax3)=plt.subplots(3,1,subplot_kw={'aspect':'equal'})
ax2.legend(labels, loc=(-0.05, 0.05), shadow=True)
ax1.pie(event1, explode=explode, colors=colors)
ax2.pie(event2, explode=explode, colors=colors)
ax3.pie(event3, explode=explode, colors=colors)
plt.show()

Я хочу, чтобы легенда была выровнена по центральному кругу, но располагалась слева от него. На данный момент я получаю очень маленькую легенду, которая пуста, нечитаема и расположена не в том месте. Как это исправить? введите описание изображения здесь


person FaCoffee    schedule 27.11.2015    source источник


Ответы (1)


Как насчет использования патчей следующим образом:

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import numpy

labels= ['Ph 1', 'Ph 2', 'Ph 3']
colors = ['darkred', 'gold', 'green']
explode = (0.1, 0.1, 0.1)
event1=numpy.array([93.90,0.45,5.65])
event2=numpy.array([82.96,0.86,16.17])
event3=numpy.array([69.25,1.20,29.55])
fig1, (ax1,ax2,ax3) = plt.subplots(3,1,subplot_kw={'aspect':'equal'})

ph1 = mpatches.Patch(color='darkred', label='Ph 1')
ph2 = mpatches.Patch(color='gold', label='Ph 2')
ph3 = mpatches.Patch(color='green', label='Ph 3')

ax2.legend(handles=[ph1, ph2, ph3], fontsize=15, loc=(-1.05, 0.15), shadow=True)

ax1.pie(event1, explode=explode, colors=colors)
ax2.pie(event2, explode=explode, colors=colors)
ax3.pie(event3, explode=explode, colors=colors)
plt.show()

Это будет выглядеть следующим образом:  введите описание изображения здесь

person Martin Evans    schedule 27.11.2015
comment
Добавление plt.tight_layout() перед шоу поможет. - person Martin Evans; 27.11.2015
comment
Ага! Спасибо! Думаю, я мог бы использовать mpatches для добавления текстовых меток справа от каждого пирога. Верный? - person FaCoffee; 27.11.2015
comment
Вы можете посмотреть на функцию annotate. - person Martin Evans; 27.11.2015