$ sudo teach IT

Файл для практики.

month,sales,profit,orders,customers
1,12000,3000,120,25
2,14500,3900,145,27
3,16800,4700,172,33
4,15500,4300,160,31
5,21500,6800,235,46
6,23800,7600,260,51
7,25200,8200,275,55
8,24100,7800,268,53
9,28600,9400,325,64
10,27800,9100,315,61
11,32400,10800,370,73
12,35800,12300,425,84

Представьте, что вы построили красивый график с результатами анализа. Возможно, это динамика продаж компании, распределение клиентов по возрасту или результаты исследования. График отлично выглядит в Jupyter Notebook или в вашей программе, но возникает новая задача — поделиться им с коллегами, вставить в презентацию или отправить заказчику. В этот момент важно не только построить график, но и правильно его сохранить.

Matplotlib позволяет экспортировать графики в различные форматы изображений и документов. При этом можно управлять качеством изображения, размером итогового файла и выбирать формат, который лучше подходит для конкретной задачи.

В этом уроке мы познакомимся с функцией savefig(), научимся сохранять графики в популярных форматах и разберемся, как получать качественные изображения для отчетов, презентаций и публикаций.

Что вы узнаете в рамках статьи

  • Как сохранять графики в файл.
  • Для чего используется функция savefig().
  • Какие форматы поддерживает Matplotlib.
  • Чем отличаются PNG, JPG, SVG и PDF.
  • Как управлять качеством изображения.
  • Как сохранять графики для отчетов и презентаций.
  • Какие ошибки часто возникают при экспорте.

Ключевые термины

  • Экспорт графика — сохранение визуализации во внешний файл.
  • savefig() — функция Matplotlib для сохранения графиков.
  • PNG — формат растрового изображения без потери качества.
  • JPG — формат изображения с компрессией.
  • SVG — векторный формат графики.
  • PDF — формат документа, часто используемый для печати и отчетов.
  • DPI — количество точек на дюйм, характеризующее качество изображения.

Зачем сохранять графики

До этого момента мы использовали plt.show(). Эта команда просто отображает график на экране. После закрытия окна изображение исчезает. В реальной работе графики редко создаются только для просмотра. Чаще всего они становятся частью дальнейшей работы: их вставляют в презентации и отчеты, отправляют клиентам или коллегам, публикуют в статьях и документации, а также сохраняют как результаты проведенного анализа. Именно поэтому важно уметь не только строить графики, но и правильно сохранять их в подходящем формате.

Первый экспорт графика

Рассмотрим простой пример.

import matplotlib.pyplot as plt

days = ["Пн", "Вт", "Ср", "Чт", "Пт"]
temperature = [18, 21, 24, 22, 19]

plt.plot(days, temperature)

plt.savefig("temperature.png")

После выполнения программы рядом с файлом появится изображение temperature.png. Внутри будет сохранен построенный график. Обратите внимание, что для сохранения необязательно вызывать plt.show().

Указание пути к файлу

При необходимости можно сохранять графики в конкретную папку.

Например:

plt.savefig("reports/weather.png")

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

Формат определяется по расширению

Matplotlib автоматически определяет формат по расширению файла.

Например:

  • plt.savefig("chart.png") создает PNG-файл.
  • plt.savefig("chart.jpg") создает JPG-файл.
  • plt.savefig("chart.svg") создает SVG-файл.
  • plt.savefig("chart.pdf") создает PDF-файл.

Matplotlib автоматически определяет формат сохраняемого файла по его расширению. Поэтому выбор формата обычно сводится к выбору расширения.

Формат PNG

PNG является наиболее популярным вариантом для сохранения графиков. Он обеспечивает хорошее качество изображения и при этом поддерживается практически всеми современными программами. Формат PNG отлично подходит для презентаций, отчетов, веб-приложений и технической документации, поэтому именно его чаще всего используют для сохранения графиков.

Формат JPG

JPG использует сжатие изображения. Размер файла обычно оказывается меньше. Однако при сильном сжатии качество изображения может ухудшаться. Для фотографий это не критично, но для графиков иногда приводит к появлению размытых линий и текста. Поэтому для визуализаций JPG применяется реже, чем PNG.

Формат SVG

SVG относится к векторной графике. Главное преимущество заключается в том, что изображение можно масштабировать практически бесконечно. При увеличении линии и текст остаются четкими.

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

Формат PDF

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

Что такое DPI

При сохранении изображений часто используется параметр dpi. Он определяет качество изображения. Чем больше значение DPI, тем более детализированным будет файл.

Например:

plt.savefig(
    "chart.png",
    dpi=300
)

dpi со значением 72 обычно используют для простых веб-страниц, 150 хорошо подходит для большинства презентаций, а 300 считается стандартом для печати, отчетов и других материалов, где важно высокое качество графики.

Сохранение большого графика

Размер изображения зависит не только от DPI. Важную роль играет размер Figure.

Например:

fig, ax = plt.subplots(
    figsize=(10, 5)
)

ax.plot(
    [1, 2, 3],
    [10, 15, 20]
)

plt.savefig(
    "chart.png",
    dpi=300
)

dpi = 30

dpi = 300

В результате получится большое и качественное изображение. Именно комбинация figsize и dpi позволяет получать профессиональные результаты.

Обрезка лишних полей

Иногда после сохранения вокруг графика появляются большие пустые поля. Для решения проблемы используется параметр bbox_inches="tight".

Пример:

plt.savefig(
    "chart.png",
    bbox_inches="tight"
)

Matplotlib автоматически обрежет лишние отступы. Этот параметр очень часто используется на практике.

Полный пример сохранения

Рассмотрим типичный вариант экспорта.

import matplotlib.pyplot as plt

days = ["Пн", "Вт", "Ср", "Чт", "Пт"]
temperature = [18, 21, 24, 22, 19]

fig, ax = plt.subplots(
    figsize=(8, 4)
)

ax.plot(days, temperature)

ax.set_title("Температура воздуха")

plt.savefig(
    "temperature.png",
    dpi=300,
    bbox_inches="tight"
)

Такой файл можно смело использовать в презентациях, документации и отчетах.

Порядок вызова функций

Новички часто пишут:

plt.show()
plt.savefig("chart.png")

После вызова show() график может быть очищен или закрыт. Поэтому рекомендуется сохранять изображение до отображения.

Правильный вариант:

plt.savefig("chart.png")
plt.show()

Наиболее частые ошибки

  • Использование JPG для важных отчетов
    Текст и линии могут выглядеть менее четкими.
  • Слишком низкий DPI
    Изображение получается размытым.
  • Сохранение после вызова show()
    Файл может сохраниться неправильно.
  • Использование большого DPI при маленьком figsize
    Качество повышается, но читаемость не всегда улучшается.
  • Забывать про bbox_inches="tight"
    Вокруг графика появляются лишние поля.

Наиболее частые вопросы

  • Какой формат лучше использовать по умолчанию?
    Обычно PNG.
  • Когда использовать SVG?
    Когда требуется масштабирование без потери качества.
  • Подходит ли JPG для графиков?
    Да, но обычно PNG выглядит лучше.
  • Какое значение DPI использовать?
    Для большинства задач подходит 300.
  • Можно ли сохранить график сразу в PDF?
    Да, достаточно указать расширение .pdf.

Итоги

В этом уроке вы познакомились с экспортом графиков в Matplotlib. Мы научились использовать функцию savefig(), сохранять визуализации в форматах PNG, JPG, SVG и PDF, а также управлять качеством изображений через параметр dpi.

Кроме того, вы узнали, как получать более аккуратные изображения с помощью bbox_inches="tight" и почему важно сохранять график до вызова show().

Теперь вы умеете не только строить графики, но и готовить их для дальнейшего использования в отчетах, презентациях, документации и аналитических проектах.

На следующий урок