2015-01-10 1 views
7

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

enter image description here

ответ

18

два способа: задним числом

fig, ax = plt.subplots() 
# ... 
fig.tight_layout() 

Или

fig.subplots_adjust(bottom=0.2) # or whatever 

Вот subplots_adjust пример: http://matplotlib.org/examples/pylab_examples/subplots_adjust.html

(но я предпочитаю tight_layout)

+1

Вы также можете сказать, передать 'tight_layout = true' в' subplots' который SÁ тот же эффект. – tacaswell

+0

Есть ли способ сделать это * без * использования '' tight_layout'' или '' subplots''? То есть если просто создать фигуру и добавить сюжет через '' plt.plot (...) ''. Причина, по которой я спрашиваю, заключается в том, что я пытаюсь создать несколько графиков для фильма, а метки заголовков и осей будут колебаться, если используются '' subplots'' и/или '' tight_layout''. Любая помощь будет оценена по достоинству. – Wolpertinger

+1

@ Wolpertinger: 'fig = plt.figure(); fig.add_axes (...); 'https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure.add_axes –

1

Subplot-adjust не работал для меня, так как вся фигура просто изменила бы размер с ярлыками, все еще выходящими за пределы.

Обходной я нашел, чтобы ось ординат всегда некоторый запас по самым высоким или минимальным у значений:

x1,x2,y1,y2 = plt.axis() 
plt.axis((x1,x2,y1 - 100 ,y2 + 100)) 
1

Быстрое решение одна линия, которая работала для меня является использование pyplot-х авто tight_layout method непосредственно доступны в Matplotlib v1.1 года:

plt.tight_layout() 

Это может быть использовано сразу перед тем вы показать сюжет (plt.show()), но после того, как ваши манипуляции по осям (например, тикание и т. д.).

Этот удобный метод позволяет избежать манипулирования отдельными фигурами подзаголовков.

Где PLT является стандартной pyplot от: import matplotlib.pyplot as plt

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