7. Файловый вывод

Несмотря на то что мы можем с легкостью обойтись обычными блокнотами Jupyter, все же иногда нам приходится писать научные статьи или готовить презентации, для которых графики необходимо сохранять в виде отдельных файлов. Matplotlib позволяет не только сохранять графики в файлах различных форматов, но еще и задавать параметры сохраняемого файла: размеры изображения, его разрешение и прозрачность. Так же возможно создание анимации, но в дальнейшем мы рассмотрим только gif - анимацию.

В самом простом случае, что бы сохранить рисунок графика, нам просто необходимо воспользоваться методом savefig объекта Figure, передав ему всего один параметр - строку с именем будущего файла:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-3, 3, 200)
y = x*(x + 2)*(x - 2)

fig, ax = plt.subplots()

ax.plot(x, y)

plt.show()

fig.savefig('мой график')

Matplotlib файловый вывод одной картинки

По умолчанию, полученный файл будет сохранен в формате png, а сам файл вы найдете, либо в директории с исполняемым скриптом. Параметр savefig может принимать путь к будущему файлу, т.е. можно указать необходимую директорию для сохраняемого файла, что очень удобно если необходимо сохранить целую серию картинок:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-3, 3, 200)

fig, ax = plt.subplots()

for a in range(1, 11):
    y = x*(x + 2)*(x - 2)/a
    ax.plot(x, y)
    fig.savefig('mpl_temp/мой график' + str(a))

plt.show()

Matplotlib файловый вывод серии картинок

Имя файла может содержать расширение необходимого формата файла, отделенное точкой:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-3, 3, 200)
y = x*(x + 2)*(x - 2)

fig, ax = plt.subplots()

ax.plot(x, y)

plt.show()

fig.savefig('mpl_temp/мой график.png')
fig.savefig('mpl_temp/мой график.pdf')
fig.savefig('mpl_temp/мой график.svg')
fig.savefig('mpl_temp/мой график.jpg')
fig.savefig('mpl_temp/мой график.gif')

После выполнения даннго скрипта может появиться сообщение об ошибке:

ValueError                                Traceback (most recent call last)
<ipython-input-15-2e7c9446139d> in <module>()
     15 fig.savefig('mpl_temp/мой график.svg')
     16 fig.savefig('mpl_temp/мой график.jpg')
---> 17 fig.savefig('mpl_temp/мой график.gif')
...
...
ValueError: Format 'gif' is not supported (supported formats: eps, jpeg,
jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff)

Из этого сообщения видно, что формат gif не поддерживается, зато есть перечень всех поддерживаемых форматов: eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff

Мы рассмотрели самый простой случай сохранения файлов, однако, если вы сравните изображения полученных файлов, то увидите, что даже этот простой способ, является более чем приемлемым если вы сохраняете файлы в формате pdf или svg, потому что они являются векторными, а значит их качество не изменяется при изменении размеров или масштаба.