2014-02-12 5 views
0
import matplotlib.pyplot as plt 

x, y = [1, 2, 3], [5, 7, 2] 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(x, y) 
fig.tight_layout() #растягивает графики на всё окно 
leg = ax.legend(['legend'], bbox_to_anchor = (1.0, 0.5), loc='upper left',) 
plt.show() 

Легенда снаружи кадра. Я вижу часть легенды, но хочу видеть все. Как это сделать?Легенда находится за пределами рамки

ответ

3

Это то, что делает bbox_to_anchor:

Пользователи могут указать любое произвольное место для легенды, используя * bbox_to_anchor * ключевое слово аргумент . bbox_to_anchor может быть экземпляром BboxBase (или его производных) или кортежем из 2 или 4 поплавков. Для Например:

loc = 'upper right', bbox_to_anchor = (0.5, 0.5) 

поместит легенду так, чтобы верхний правый угол легенды на центр осей.

Так что поиграйте с этим кортежем, например попробуйте bbox_to_anchor = (0.05, 0.95). Или просто оставьте это полностью, и легенда будет в верхнем левом углу.

Edit: Если вы хотите легенду быть из сюжетных, вы можете попробовать следующее:

import matplotlib.pyplot as plt 

x, y = [1, 2, 3], [5, 7, 2] 
fig = plt.figure() 
ax = fig.add_axes((0.2, 0.05, 0.75, 0.9)) 
ax.plot(x, y) 
leg = ax.legend(['legend'], bbox_to_anchor = (0, 0.9)) 
plt.show() 

Вы можете настроить номера для точной настройки позиции.

+0

Мне нужно, чтобы легенда была вне графика, но я хочу увидеть легенду. – user3301310

+0

@ user3301310 Вы имеете в виду из «подзаголовка»? Но если вы используете 'tight_layout', там нет места? –

+0

Да, когда я использую tight_layout(), нет места легенде! – user3301310

Смежные вопросы