Ответ 1
В согласии с комментарием Дэвида Робинсона цифра, полученная здесь, составляет 3,25 на 3 дюйма, как измеряется фотошопом, хотя xlabel действительно показывает отсечку (mpl 1.1.0 в python 2.6 64-bit, win7)
Решение проблемы заключается в ручной настройке полей с помощью subplot_adjust
:
from matplotlib.pyplot import *
fig = figure(1, figsize=(3.25, 3))
plot([0, 1, 5, 2, 9])
title('title')
xlabel('xAxis')
ylabel('yAxis')
subplots_adjust(bottom=0.14) # <--
fig.savefig('test.png', dpi=600)
Значение по умолчанию этих полей задается в файле matploblibrc, и вы можете постоянно его изменять. Значение по умолчанию для нижнего поля в моем случае было 0,10.
Если ваша фигура неправильного размера или правильная, как в моем случае, вы можете использовать subplot_adjust, чтобы обеспечить достаточное пространство для метки. Затем, если необходимо, вы можете рассчитать корректировку, чтобы получить фактический размер изображения или фигуры, который вы хотите, как вы уже сделали.
Окончательный вид сохраненной фигуры зависит от размера этой фигуры. Если вы show()
свою фигуру, и вы сохраните ее из рамки просмотра matplotlib, вы получите отрисовку метки на изображении. Но если вы увеличите вручную размер изображения, вы увидите ярлык, и если вы сохраните его, он также появится в сохраненном изображении. Допустим, это WYSIWYG. Ваша цифра очень маленькая, и это заставляет ваш ярлык срезаться. Таким образом, другой подход состоит в том, чтобы сделать более крупную фигуру, возможно, с более низким разрешением, чтобы сохранить общий размер. Это также работает:
from matplotlib.pyplot import *
fig = figure(1, figsize=(6.5, 6)) # <---
plot([0, 1, 5, 2, 9])
title('title')
xlabel('xAxis')
ylabel('yAxis')
fig.savefig('test.png', dpi=300) # <---
В любом случае, я бы рассматривал это как ошибку matplolib, так как вы могли ожидать, что после сюжета и сохранения будет необработанная фигура.