В принципе, легенда не предназначена для обновления, но вместо этого воссоздана.
Следующее будет делать то, что вам нужно, но имейте в виду, что это хак, который использует внутренние методы и, следовательно, не гарантированно работает и может сломаться в будущих выпусках.Так что не используйте его в производственном коде.Кроме того, если вы установили заголовок легенды с другим шрифтом (размером), чем по умолчанию, он будет потерян при обновлении.Кроме того, если вы изменили порядок маркеров и меток с помощью markerfirst
, он будет потерян при обновлении.
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot([0,1,2,3,4,5,6], label='linear')
ax.plot([0,1,4,9,16,25,36], label='square')
lgd = ax.legend(loc='lower right')
def add_patch(legend):
from matplotlib.patches import Patch
ax = legend.axes
handles, labels = ax.get_legend_handles_labels()
handles.append(Patch(facecolor='orange', edgecolor='r'))
labels.append("Color Patch")
legend._legend_box = None
legend._init_legend_box(handles, labels)
legend._set_loc(legend._loc)
legend.set_title(legend.get_title().get_text())
add_patch(lgd)
plt.show()