Подтвердить что ты не робот

Matplotlib: Сохранить цифру как файл из ноутбука iPython

Я пытаюсь сохранить фигуру Matplotlib в виде файла из ноутбука iPython.

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
ax.plot([1,2])

fig.savefig('test.png')

Встроенный просмотр в iPython ноутбуке выглядит хорошо:

Inline view of figure in iPython notebook


Файл test.png почти пуст. Похоже, что сюжет смещен в верхнем правом углу, вы можете увидеть метки метки "1.0" и "0.0" в углу.

test.png

Как я могу создать файл из ноутбука iPython, который выглядит как встроенный просмотр?

4b9b3361

Ответ 1

Задача решена: добавьте аргумент 'bbox_inches='tight' в savefig.

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_axes([1,1,1,1])
plt.plot([1,2])

savefig('test.png', bbox_inches='tight')

Я не понимаю, что происходит здесь, но теперь файл выглядит как встроенный файл для iPython. Yay.

Ответ 2

Собственно, savefig работает правильно. Когда вы вызываете add_axes, ваш список указывает прямоугольник: [left, bottom, width, height]. Поскольку рисунок идет от 0 до 1 на обеих осях с началом в левом нижнем углу, вы делаете прямоугольник ширины и высоты 1, начиная с самого верхнего правого рисунка. Вероятно, вы хотите делать ax = fig.add_axes([0,0,1,1]).

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