Matplotlib: несколько легенд на одном рисункеPython

Программы на Python
Anonymous
Matplotlib: несколько легенд на одном рисунке

Сообщение Anonymous »

У меня есть несколько функций построения графиков, каждая из которых получает разные типы данных и отображает их со своим заголовком и легендами. Однако, когда я пытаюсь нанести их на одну и ту же фигуру, первая перезаписывается.
Я понимаю, что один из способов сделать это — вызвать 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

Вернуться в «Python»