Производство по чертежам Подбор аналогов Цены производителя Оригинальная продукция в короткие сроки
INNERпроизводство и поставка промышленных комплектующих и оборудования
Бесплатно Личный кабинет — избранное и расчёты ★ Регистрация →
Новинка Симуляторы и тренажёры — ЧПУ, допуски, ПИД Попробовать →
Правовая информация →

INNER
Контакты

Графики в Matplotlib для технических отчётов

  • 14.07.2026
  • Познавательное

Графики в Matplotlib для технических отчётов строятся по устойчивой схеме: создать фигуру и оси, нанести данные, оформить оси, сетку, подписи и легенду, затем сохранить результат в растровый PNG или векторный SVG. Ниже разобран рабочий процесс на объектном интерфейсе библиотеки — от построения одной кривой до аккуратного экспорта нескольких графиков в файл для вставки в отчёт. Примеры кода приведены для актуальных версий Matplotlib.

Содержание статьи
Основа

Фигура и оси: объектный интерфейс

В Matplotlib есть два стиля работы: процедурный через pyplot (команды вроде plt.plot действуют на «текущие» оси) и объектный, где явно создаются объекты фигуры и осей. Для отчётов, где на одном изображении бывает несколько графиков и нужен предсказуемый контроль оформления, предпочтителен объектный интерфейс: fig, ax = plt.subplots().

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y)
plt.show()

Здесь fig — контейнер всего изображения, ax — область построения (оси). Размер задаётся параметром figsize в дюймах. Метод ax.plot(x, y) наносит кривую по массивам координат.

Одна фигура (fig) может содержать несколько областей построения (ax); всё оформление привязывается к конкретным осям.

Наверх Координатная сетка

Оси, пределы и сетка

Диапазоны осей задают методами ax.set_xlim и ax.set_ylim. Координатную сетку включает ax.grid: можно управлять основной и вспомогательной сеткой, для чего вспомогательные деления предварительно включают методом ax.minorticks_on.

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y)

ax.set_xlim(0, 10)
ax.set_ylim(-1.2, 1.2)

ax.minorticks_on()
ax.grid(True, which='major', linewidth=0.6)
ax.grid(True, which='minor', linewidth=0.3, alpha=0.5)

plt.show()

Параметр which принимает значения 'major', 'minor' или 'both'. Толщину и прозрачность линий сетки задают linewidth и alpha, что помогает не перегружать график для печати.

Наверх Аннотирование

Подписи, заголовок и легенда

Технический график обязан нести подписи осей с единицами измерения и, при необходимости, заголовок. Подписи задают методами ax.set_xlabel, ax.set_ylabel, заголовок — ax.set_title. Легенда формируется из подписей кривых (label) при вызове ax.legend.

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y, label='Сигнал')

ax.set_xlabel('Время, с')
ax.set_ylabel('Амплитуда, В')
ax.set_title('Осциллограмма сигнала')
ax.legend()

plt.show()

Русские подписи отображаются без дополнительной настройки: шрифт Matplotlib по умолчанию (DejaVu Sans) содержит кириллицу. Если задан другой шрифт без нужных символов, кириллица или знак «минус» могут не отрисоваться — тогда выбирают шрифт с этими глифами.

Наверх Множественные данные

Несколько кривых на одном графике

Несколько зависимостей наносят повторными вызовами ax.plot. Кривые различают цветом, типом линии (linestyle) и маркерами (marker), чтобы график оставался читаемым и в чёрно-белой печати.

y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y1, linestyle='-',  label='sin')
ax.plot(x, y2, linestyle='--', label='cos')

ax.set_xlabel('Время, с')
ax.set_ylabel('Амплитуда, отн. ед.')
ax.grid(True, linewidth=0.5)
ax.legend()

plt.show()
Параметр plotНазначениеПримеры значений
linestyle (ls)Тип линии'-', '--', '-.', ':'
linewidth (lw)Толщина линии0.5, 1.0, 2.0
markerМаркер точек'o', 's', '^', 'x', '.'
color (c)Цвет'k', 'tab:blue', '#bf5a2a'
labelПодпись для легенды'Сигнал 1'
Наверх Оформление

Стили оформления

Единый вид всех графиков отчёта удобно задавать готовым стилем через plt.style.use. Список доступных стилей возвращает plt.style.available; для отчётов подходят, например, 'bmh', 'ggplot', 'grayscale', 'classic'.

plt.style.use('bmh')

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, np.sin(x), label='sin')
ax.set_xlabel('Время, с')
ax.set_ylabel('Амплитуда')
ax.legend()
plt.show()

Стили с именами seaborn начиная с версии Matplotlib 3.6 переименованы и доступны с префиксом seaborn-v0_8- (например, 'seaborn-v0_8-whitegrid'). Прежние имена без префикса в актуальных версиях выдают предупреждение об устаревании.

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

plt.rcParams['font.size'] = 12
plt.rcParams['axes.grid'] = True
plt.rcParams['lines.linewidth'] = 1.5
Наверх Сохранение

Экспорт в PNG и SVG

Готовый график сохраняют методом fig.savefig. Формат определяется по расширению имени файла (либо параметром format). Для растрового PNG важно задать разрешение dpi; параметр bbox_inches='tight' убирает лишние поля вокруг рисунка.

fig.savefig('report.png', dpi=300, bbox_inches='tight')
fig.savefig('report.svg')
fig.savefig('report.pdf')
ФорматТипКогда применять
PNGРастровыйВставка в документы и на веб; фиксированное разрешение, задаётся dpi
SVGВекторныйМасштабирование без потери качества, редактирование в векторных редакторах
PDFВекторныйПечатные отчёты, вставка в верстку документа

Для печати без потери чёткости при масштабировании выбирают вектор (SVG или PDF); для растрового PNG задают достаточное dpi (обычно 300 для печати).

Сохранять фигуру надёжнее до вызова plt.show(). При работе через pyplot (plt.savefig) после закрытия окна текущая фигура может быть уже недоступна, и файл окажется пустым; при сохранении через объект (fig.savefig) достаточно сохранить ссылку на фигуру.

Наверх Сборка

Полный пример

Ниже собранный воедино фрагмент: построение двух кривых, оформление осей и сетки, легенда и сохранение в PNG и SVG для отчёта.

import numpy as np
import matplotlib.pyplot as plt

plt.style.use('bmh')
plt.rcParams['font.size'] = 12

x = np.linspace(0, 10, 400)
y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y1, linestyle='-',  label='sin')
ax.plot(x, y2, linestyle='--', label='cos')

ax.set_xlabel('Время, с')
ax.set_ylabel('Амплитуда, отн. ед.')
ax.set_title('Гармонические сигналы')
ax.set_xlim(0, 10)
ax.minorticks_on()
ax.grid(True, which='major', linewidth=0.6)
ax.grid(True, which='minor', linewidth=0.3, alpha=0.5)
ax.legend()

fig.tight_layout()
fig.savefig('report.png', dpi=300, bbox_inches='tight')
fig.savefig('report.svg')

Метод fig.tight_layout() автоматически подгоняет отступы, чтобы подписи не обрезались. После сохранения файлы report.png и report.svg готовы к вставке в отчёт.

Наверх

Вопросы и ответы

Как построить график в Matplotlib для технического отчёта?

Создать фигуру и оси через fig, ax = plt.subplots(), нанести данные методом ax.plot(x, y), оформить оси, сетку, подписи и легенду, затем сохранить методом fig.savefig в PNG или SVG.

Чем ax.plot отличается от plt.plot?

plt.plot действует на «текущие» оси (процедурный стиль), а ax.plot — на конкретный объект осей (объектный стиль). Для отчётов с несколькими графиками объектный интерфейс предсказуемее и удобнее.

Как добавить сетку на график?

Методом ax.grid(True). Для вспомогательной сетки включают мелкие деления через ax.minorticks_on() и вызывают ax.grid(True, which='minor'). Параметр which принимает 'major', 'minor' или 'both'.

Как подписать оси на русском языке?

Передать строки с кириллицей в ax.set_xlabel и ax.set_ylabel. Шрифт по умолчанию (DejaVu Sans) содержит кириллицу, поэтому дополнительная настройка не требуется.

PNG или SVG — что выбрать для отчёта?

SVG (и PDF) — вектор: масштабируется без потери качества, удобен для печати и редактирования. PNG — растр с фиксированным разрешением; для него задают dpi (для печати обычно 300).

Как сохранить график без обрезки подписей?

Использовать fig.tight_layout() перед сохранением и параметр bbox_inches='tight' в savefig. Сохранять файл нужно до вызова plt.show().

Как задать единый стиль для всех графиков?

Применить готовый стиль через plt.style.use('bmh') (или другой из plt.style.available) и при необходимости настроить plt.rcParams. Стили seaborn в актуальных версиях доступны с префиксом seaborn-v0_8-.

Статья носит ознакомительный характер. Синтаксис и поведение функций могут различаться между версиями библиотеки; перед применением рекомендуется сверяться с документацией используемой версии. Автор и издатель не несут ответственности за возможные последствия использования изложенной информации.

Источники

  1. Официальная документация библиотеки Matplotlib — руководство пользователя и справочник API (pyplot, Figure, Axes, savefig, style).
  2. Официальная документация библиотеки NumPy — работа с массивами данных.
  3. Hunter J. D. Matplotlib: A 2D Graphics Environment // Computing in Science & Engineering.

© Компания Иннер Инжиниринг. Все права защищены.

Появились вопросы?

Вы можете задать любой вопрос на тему нашей продукции или работы нашего сайта.