Скидка на подшипники из наличия!
Новое поступление товара в 2026 году!
Графики в Matplotlib для технических отчётов строятся по устойчивой схеме: создать фигуру и оси, нанести данные, оформить оси, сетку, подписи и легенду, затем сохранить результат в растровый PNG или векторный SVG. Ниже разобран рабочий процесс на объектном интерфейсе библиотеки — от построения одной кривой до аккуратного экспорта нескольких графиков в файл для вставки в отчёт. Примеры кода приведены для актуальных версий Matplotlib.
В Matplotlib есть два стиля работы: процедурный через pyplot (команды вроде plt.plot действуют на «текущие» оси) и объектный, где явно создаются объекты фигуры и осей. Для отчётов, где на одном изображении бывает несколько графиков и нужен предсказуемый контроль оформления, предпочтителен объектный интерфейс: fig, ax = plt.subplots().
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
figsize
ax.plot(x, y)
Одна фигура (fig) может содержать несколько областей построения (ax); всё оформление привязывается к конкретным осям.
Диапазоны осей задают методами ax.set_xlim и ax.set_ylim. Координатную сетку включает ax.grid: можно управлять основной и вспомогательной сеткой, для чего вспомогательные деления предварительно включают методом ax.minorticks_on.
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, что помогает не перегружать график для печати.
which
'major'
'minor'
'both'
linewidth
alpha
Технический график обязан нести подписи осей с единицами измерения и, при необходимости, заголовок. Подписи задают методами ax.set_xlabel, ax.set_ylabel, заголовок — ax.set_title. Легенда формируется из подписей кривых (label) при вызове ax.legend.
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), чтобы график оставался читаемым и в чёрно-белой печати.
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()
Единый вид всех графиков отчёта удобно задавать готовым стилем через plt.style.use. Список доступных стилей возвращает plt.style.available; для отчётов подходят, например, 'bmh', 'ggplot', 'grayscale', 'classic'.
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'). Прежние имена без префикса в актуальных версиях выдают предупреждение об устаревании.
seaborn-v0_8-
'seaborn-v0_8-whitegrid'
Точечная настройка выполняется через параметры среды выполнения plt.rcParams — например, единый размер шрифта и толщина линий для всех последующих графиков.
plt.rcParams
plt.rcParams['font.size'] = 12 plt.rcParams['axes.grid'] = True plt.rcParams['lines.linewidth'] = 1.5
Готовый график сохраняют методом fig.savefig. Формат определяется по расширению имени файла (либо параметром format). Для растрового PNG важно задать разрешение dpi; параметр bbox_inches='tight' убирает лишние поля вокруг рисунка.
fig.savefig
format
dpi
bbox_inches='tight'
fig.savefig('report.png', dpi=300, bbox_inches='tight') fig.savefig('report.svg') fig.savefig('report.pdf')
Для печати без потери чёткости при масштабировании выбирают вектор (SVG или PDF); для растрового PNG задают достаточное dpi (обычно 300 для печати).
Сохранять фигуру надёжнее до вызова plt.show(). При работе через pyplot (plt.savefig) после закрытия окна текущая фигура может быть уже недоступна, и файл окажется пустым; при сохранении через объект (fig.savefig) достаточно сохранить ссылку на фигуру.
plt.show()
plt.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 готовы к вставке в отчёт.
fig.tight_layout()
report.png
report.svg
Создать фигуру и оси через fig, ax = plt.subplots(), нанести данные методом ax.plot(x, y), оформить оси, сетку, подписи и легенду, затем сохранить методом fig.savefig в PNG или SVG.
plt.plot действует на «текущие» оси (процедурный стиль), а ax.plot — на конкретный объект осей (объектный стиль). Для отчётов с несколькими графиками объектный интерфейс предсказуемее и удобнее.
Методом ax.grid(True). Для вспомогательной сетки включают мелкие деления через ax.minorticks_on() и вызывают ax.grid(True, which='minor'). Параметр which принимает 'major', 'minor' или 'both'.
ax.grid(True)
ax.minorticks_on()
ax.grid(True, which='minor')
Передать строки с кириллицей в ax.set_xlabel и ax.set_ylabel. Шрифт по умолчанию (DejaVu Sans) содержит кириллицу, поэтому дополнительная настройка не требуется.
SVG (и PDF) — вектор: масштабируется без потери качества, удобен для печати и редактирования. PNG — растр с фиксированным разрешением; для него задают dpi (для печати обычно 300).
Использовать fig.tight_layout() перед сохранением и параметр bbox_inches='tight' в savefig. Сохранять файл нужно до вызова plt.show().
savefig
Применить готовый стиль через plt.style.use('bmh') (или другой из plt.style.available) и при необходимости настроить plt.rcParams. Стили seaborn в актуальных версиях доступны с префиксом seaborn-v0_8-.
plt.style.use('bmh')
Вы можете задать любой вопрос на тему нашей продукции или работы нашего сайта.