В соответствии с комментарием Дэвида Робинсона, полученная здесь цифра составляет 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, так как вы могли бы ожидать, что после построения и сохранения появится неразрезанная фигура.