Легенда о главной фигуре за пределами сюжетов - PullRequest
0 голосов
/ 13 мая 2019

У меня есть несколько подзаговоров в одной фигуре. На каждой фигуре изображены несколько линий, которые представляют одну и ту же вещь (представленную цветом), но в разных ситуациях (разные вспомогательные сюжеты). Я хотел бы создать легенду в основании рисунка, показывающую, что означает цвет линии. Тем не менее, я столкнулся с проблемой получения легенды, чтобы не перекрывать вспомогательные участки, и, если я могу настроить оси, получить легенду для сохранения.

Я пробовал несколько различных решений с некоторой помощью здесь , но не смог адаптироваться к участкам. Ниже приведен пример кода, с которым я работаю.

import numpy as np
import matplotlib.pyplot as plt

m1=1
m2=10

x=np.linspace(0,100,num=101,endpoint=True)
y1m1=m1*x**2
y2m1=m1*x**0.5
y1m2=m2*x**2
y2m2=m2*x**0.5

fig=plt.figure(figsize=(4,4))
ax1=fig.add_subplot(211)
ax1.plot(x,y1m1,'b',label=r'$x^2$')
ax1.plot(x,y2m1,'r',label=r'$\sqrt{x}$')
ax2=fig.add_subplot(212)
ax2.plot(x,y1m2,'b')
ax2.plot(x,y2m2,'r')
fig.legend(loc='lower center',ncol=2)
fig.tight_layout()
fig.savefig('examplefig.png',dpi=300)
plt.show()

Моя цель - сохранить вывод в png для хорошей фигуры.

1 Ответ

0 голосов
/ 13 мая 2019

Это один из способов сделать это, используя предложенное здесь .Идея состоит в том, чтобы добавить легенду в положение относительно данного объекта оси.В вашем случае, так как вы хотите добавить легенду на базу, предпочтительно указывать позицию относительно ax2.Использование ncol=2 - дело личного выбора.

fig=plt.figure(figsize=(4,4))
ax1=fig.add_subplot(211)
l1, = ax1.plot(x,y1m1,'b')
l2, = ax1.plot(x,y2m1,'r')
ax2=fig.add_subplot(212)
ax2.plot(x,y1m2, 'b')
ax2.plot(x,y2m2, 'r')

ax2.legend(handles = [l1,l2] , labels=[r'$x^2$', r'$\sqrt{x}$'],
           bbox_to_anchor=(0.7, -0.2), ncol=2)

fig.tight_layout()

enter image description here

...