Если вы используете дескрипторы на под-сюжет, вы получите желаемый результат легенды в каждой подфигуре - либо измените ваши вызовы на plt.legend()
после графика на
ax11.legend()
ax12.legend()
и т. Д.,
или более просто / более широко, просто переберите все маркеры в конце:
for ax in axes.flat:
ax.legend(loc='best')
РЕДАКТИРОВАТЬ : более полное решение, чтобы показать построение подзаговоров вдве части - вещи, которые отличаются от вещей, которые являются последовательными.
# Plot data
ax11.plot(winter_temps, label='Winter')
ax11.set_title('Anomaly in temperature during winters 1953-2016')
ax12.plot(spring_temps, label='Spring')
ax12.set_title('Anomaly in temperature during springs 1953-2016')
ax21.plot(summer_temps, label='Summer')
ax21.set_title('Anomaly in temperature during summers 1953-2016')
ax22.plot(fall_temps, label='Fall')
ax22.set_title('Anomaly in temperature during falls 1953-2016')
# set up labels, limits, gridlines, legends
for ax in axes.flat:
ax.set_xlabel('Months')
ax.set_ylabel('Temperature anomaly (Celsius)')
ax.set_ylim(min_temp, max_temp)
ax.grid('on')
ax.legend(loc='best')
Я бы также предложил взглянуть на fig.suptitle()
, рассмотреть возможность использования краткого заголовка для каждого подзаговора («Зима») или не использовать его вообще.поскольку легенда уже включает это.И, наконец, проверьте sharex/sharey
аргументы subplots(...)
;это позволяет вам избежать установки размеров независимо на всех четырех вспомогательных участках, и они перемещаются вместе, если вы прокручиваете в интерактивном режиме.