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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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