РЕДАКТИРОВАТЬ: это исправлено в последних версиях matplotlib здесь
Отказ от ответственности: Я знаю, что использование подфигур не имеет значения в этом простом примере, последний используется только для демонстрации моей проблемы: я хочу иметь возможность использовать fig.legend() с fig.subfigures1.
< hr />
В настоящее время я открываю для себя новый модуль подфигур в matplotlib. Я заметил, что легенды фигур, созданные с помощью fig.legend(), не отображаются, когда основная фигура содержит подфигуры:
РЕДАКТИРОВАТЬ: это исправлено в последних версиях matplotlib здесь
[b]Отказ от ответственности:[/b] Я знаю, что использование подфигур не имеет значения в этом простом примере, последний используется только для демонстрации моей проблемы: я хочу иметь возможность использовать fig.legend() с fig.subfigures1. < hr /> В настоящее время я открываю для себя новый модуль подфигур в matplotlib. Я заметил, что легенды фигур, созданные с помощью fig.legend(), не отображаются, когда основная фигура содержит подфигуры: [code]import matplotlib.pyplot as plt import numpy as np
for subfig in subfigs: axarr = subfig.subplots(1, 2) for ax in axarr.flatten(): l1, = ax.plot(x, y1, label='line1') l2, = ax.plot(x, y2, label='line2') # ax.legend() # subfig.legend(handles=[l1, l2], loc='upper center', ncol=2) fig.legend(handles=[l1, l2], loc='upper center', ncol=2) plt.savefig('subfigures_figlegend.png', dpi=200) [/code] [img]https://i.sstatic.net/vegGH.png[/img]
Обратите внимание, что легенда к фигуре отсутствует. Для сравнения обратите внимание, что он отображается только при использовании plt.subplots: [code]fig, axarr = plt.subplots(2, 2, constrained_layout=True) for ax in axarr.flatten(): l1, = ax.plot(x, y1, label='line1') l2, = ax.plot(x, y2, label='line2') # ax.legend() fig.legend(handles=[l1, l2], loc='upper center', ncol=2) plt.savefig('subplots_figlegend.png', dpi=200) [/code] [img]https://i.sstatic.net/OjY9R.png[/img]