2015-01-07 4 views
0

У меня есть 2 графика в сюжете вместе, и я хочу, чтобы легенда шла в пустом пространстве под ними обоих. По какой-то причине он всегда идет прямо поверх одного из пирогов, даже если я делаю «снизу».Python matplotlib легенда ниже нескольких графиков

Кроме того, я дважды использовал свойство title для каждого графа. Как я могу перемещать метки под диаграммой? Свойство title не похоже на свойство loc.

Спасибо!

labels = 'a', 'b', 'c', 'd' 
fracsQuads = [6, 14, 1, 79] 
fracsTrips = [11, 16, 7, 66] 
colors=['Goldenrod', 'LimeGreen', 'Crimson', 'DeepSkyBlue'] 

explode=(0, 0, 0, 0) 

# Make square figures and axes 

the_grid = GridSpec(1, 2) 

plt.subplot(the_grid[0, 0], aspect=1) 

plt.pie(fracsQuads, autopct='%1.0f%%', colors=colors, pctdistance=1.2) 

plt.title('Four knockouts') 
plt.subplot(the_grid[0, 1], aspect=1) 


plt.pie(fracsTrips, explode=explode, autopct='%.0f%%', colors=colors, pctdistance=1.2) 
plt.title('Three knockouts') 

#plt.legend(labels, loc='best') 

font = {'family' : 'normal', 
     'weight' : 'normal', 
     'size' : 14} 

matplotlib.rc('font', **font) 

plt.show() 

plt.savefig('pythonFigureTest.png', facecolor='white', transparent=True) 

ответ

0

Дело в том, что вы не маркируете оси. Поэтому легенда будет помещена всегда относительно правого графика, потому что это была последняя созданная ось. Вы можете перейти в поле легенды вручную с помощью bbox_to_anchor. Кроме того, я удалил заголовки и поместил текст вручную под графиком, используя figtext().

Следующий код должен это сделать:

font = {'family' : 'normal', 
     'weight' : 'normal', 
     'size' : 14} 

rcParams.update(font) 

labels = 'a', 'b', 'c', 'd' 
fracsQuads = [6, 14, 1, 79] 
fracsTrips = [11, 16, 7, 66] 
colors=['Goldenrod', 'LimeGreen', 'Crimson', 'DeepSkyBlue'] 

explode=(0, 0, 0, 0) 

# Make square figures and axes 

the_grid = GridSpec(1, 2) 

ax1 = plt.subplot(the_grid[0, 0], aspect=1) 
ax2 = plt.subplot(the_grid[0, 1], aspect=1) 

ax1.pie(fracsQuads, autopct='%1.0f%%', colors=colors, pctdistance=1.2) 
ax2.pie(fracsTrips, explode=explode, autopct='%.0f%%', colors=colors, pctdistance=1.2) 

plt.figtext(0.19,0.2,'Four knockouts') 
plt.figtext(0.61,0.2,'Three knockouts') 

ax1.legend(labels, loc='lower center',bbox_to_anchor=(1.1, -0.1), 
       prop={'size':11}) 

plt.show() 

Я использовал маленькие fontsizes в коробке легенда такова, что она прекрасно вписывается между ними. Если у вас длинный текст, вам, возможно, придется поиграть с цифрами.

+0

Спасибо - это здорово! – jcam77

Смежные вопросы