Я понимаю, что один из способов сделать это — вызвать get_artist(), однако поскольку легенды создаются внутри функций, это кажется невозможным. Есть ли какой-нибудь LegendHandler для этого? Получить легенду с каждого графика и показать их на рисунке? Должен ли я возвращать легенду из каждой функции?
Вот упрощенный код того, что у меня есть:
Код: Выделить всё
def plot_1(fig, data, ax = None):
if ax = None:
ax = fig.add_subplot(111)
ax.plot(data)
ax.set_xlabel('t')
plt.axis('tight')
# Create a legend
colors = {'A':'blue',
'B':'yellow',
'C':'red'}
legend_labels = []
legend_handles = []
for key in colors.keys():
legend_labels.append(key)
p = matplotlib.patches.Rectangle((0, 0), 1, 1, fc = colors[key], alpha = 0.5)
legend_handles.append(p)
ax.legend(legend_handles, legend_labels, loc='center left', bbox_to_anchor=(1, 0.5))
def plot_2(fig, data, ax = None):
if ax = None:
ax = fig.add_subplot(111)
ax.plot(data, color='green', linewidth=1, label='L1')
ax.set_xlabel('t')
ax.autoscale()
ax.legend()
def main():
plot_1(fig, data = data1)
plot_2(fig, data = data2)
Примечание из комментария:
- matplotlib: две разные легенды на одном графике — причина, по которой я упомянул get_artist< /code>, о котором упоминалось в той теме. На данный момент я решил эту проблему, но я искал более чистый способ для этого конкретного случая. Сейчас я вернул легенду из каждой функции и сделал то, что было предложено в этой теме.
Подробнее здесь: https://stackoverflow.com/questions/252 ... ame-figure