Настройка фигуры: размер, dpi, подписи

Настройка фигуры: размер, dpi, подписи Matplotlib / Seaborn

Привет! Ты уже научился строить графики в Matplotlib. Но они выглядят как-то не так: слишком маленькие, без подписей, не хватает сетки. Как сделать так, чтобы графики выглядели профессионально?

В этой статье мы разберём:

  • Как задать размер графика (figsize)
  • Как изменить разрешение (dpi)
  • Как добавить заголовок и подписи осей
  • Как настроить шрифты и сетку
  • Как подготовить график для презентации

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный Matplotlib (pip install matplotlib)
  • Базовое понимание создания графиков
  • Желание делать красивые графики

Совет: Красивый график — это не просто украшение. Он помогает лучше понять данные и донести идеи до других.

Основная часть

Размер фигуры: figsize

figsize задаёт размер фигуры в дюймах (ширина, высота).

import matplotlib.pyplot as plt
import numpy as np

# Данные
x = np.linspace(0, 10, 100)
y = np.sin(x)

# График маленького размера
plt.figure(figsize=(4, 3))
plt.plot(x, y)
plt.title('Маленький график (4×3)')
plt.show()

# График большого размера
plt.figure(figsize=(10, 6))
plt.plot(x, y)
plt.title('Большой график (10×6)')
plt.show()

Совет: Экспериментируй с размерами. Для презентаций часто используют (12, 6) или (16, 9). Стандарт — (8, 5).

Разрешение: dpi

dpi (dots per inch) — количество точек на дюйм. Влияет на чёткость при сохранении.

# Низкое разрешение
plt.figure(figsize=(8, 5), dpi=50)
plt.plot(x, y)
plt.title('Низкое разрешение (50 dpi)')
plt.savefig('low_res.png')
plt.show()

# Высокое разрешение
plt.figure(figsize=(8, 5), dpi=300)
plt.plot(x, y)
plt.title('Высокое разрешение (300 dpi)')
plt.savefig('high_res.png')
plt.show()

Совет: Для экрана достаточно 72–96 dpi. Для печати и презентаций используй 300 dpi.

Заголовок: title()

title() добавляет заголовок к графику.

plt.figure(figsize=(8, 5))
plt.plot(x, y, color='blue')

# Заголовок с настройками
plt.title('График синусоиды', fontsize=16, fontweight='bold', pad=20)
plt.show()

Параметры:

ПараметрОписаниеПример
fontsizeРазмер шрифтаfontsize=16
fontweightЖирность ('bold''normal')fontweight='bold'
padОтступ от графика (в пикселях)pad=20
colorЦвет заголовкаcolor='darkblue'
locПоложение ('center''left''right')loc='left'

Подписи осей: xlabel(), ylabel()

Подписи осей помогают понять, что изображено на графике.

plt.figure(figsize=(8, 5))
plt.plot(x, y, color='blue', linewidth=2)

plt.xlabel('X', fontsize=14, fontweight='bold', color='darkred')
plt.ylabel('Y', fontsize=14, fontweight='bold', color='darkred')
plt.title('График с подписями осей', fontsize=16)

plt.show()

Совет: Всегда добавляй подписи осей. Это делает график понятным без дополнительных пояснений.

Настройка шрифтов

Можно настроить все шрифты сразу через rcParams:

import matplotlib.pyplot as plt

# Глобальные настройки шрифтов
plt.rcParams['font.size'] = 14
plt.rcParams['font.family'] = 'Arial'
plt.rcParams['axes.titlesize'] = 18
plt.rcParams['axes.labelsize'] = 14
plt.rcParams['xtick.labelsize'] = 12
plt.rcParams['ytick.labelsize'] = 12
plt.rcParams['legend.fontsize'] = 12

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

plt.figure(figsize=(8, 5))
plt.plot(x, y1, label='Синус')
plt.plot(x, y2, label='Косинус')
plt.title('График с глобальными настройками шрифтов')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()

Совет: Глобальные настройки полезны, если ты делаешь несколько графиков в одном стиле.

Сетка: grid()

Сетка помогает оценивать значения на глаз.

plt.figure(figsize=(8, 5))
plt.plot(x, y, color='blue', linewidth=2)

# Базовая сетка
plt.grid(True)

# Настроенная сетка
plt.grid(True, linestyle='--', alpha=0.7, color='gray')

plt.title('График с настроенной сеткой')
plt.show()

Параметры сетки:

ПараметрОписаниеПример
linestyleСтиль линии'--''-.'':'
alphaПрозрачность (0–1)0.7
colorЦвет сетки'gray''lightgray'
linewidthТолщина линии1

Легенда: legend()

Если на графике несколько линий, нужна легенда.

plt.figure(figsize=(8, 5))
plt.plot(x, np.sin(x), label='Синус')
plt.plot(x, np.cos(x), label='Косинус')

plt.title('График с легендой')
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True, alpha=0.3)

# Легенда
plt.legend(loc='upper right', fontsize=12, framealpha=0.9)

plt.show()

Параметры легенды:

ПараметрОписаниеПример
locПоложение'upper right''lower left'
fontsizeРазмер шрифта12
framealphaПрозрачность рамки0.9
shadowТеньTrue

Сохранение с настройками

При сохранении можно также управлять качеством.

plt.figure(figsize=(10, 6), dpi=100)
plt.plot(x, y)
plt.title('График для сохранения')
plt.grid(True)

# Сохранение с высоким качеством
plt.savefig('graph.png', dpi=300, bbox_inches='tight', facecolor='white')

Параметры:

ПараметрОписание
dpiРазрешение при сохранении
bbox_inches='tight'Обрезает лишние поля
facecolorЦвет фона

Полный пример: подготовка графика для презентации

import matplotlib.pyplot as plt
import numpy as np

# Глобальные настройки
plt.rcParams['font.size'] = 14
plt.rcParams['font.family'] = 'Arial'

# Данные
months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек']
sales = [120, 130, 140, 160, 180, 200, 220, 210, 190, 170, 150, 140]
sales_2024 = [100, 110, 120, 140, 160, 180, 190, 200, 180, 160, 140, 130]

# Создаём фигуру для презентации
fig, ax = plt.subplots(figsize=(12, 7))

# Графики
ax.plot(months, sales, marker='o', linewidth=3, label='2025', color='#2E86C1')
ax.plot(months, sales_2024, marker='s', linewidth=3, label='2024', color='#E74C3C', linestyle='--')

# Заголовок и подписи
ax.set_title('Сравнение продаж по месяцам', fontsize=22, fontweight='bold', pad=20)
ax.set_xlabel('Месяц', fontsize=16, fontweight='bold')
ax.set_ylabel('Продажи (тыс. руб.)', fontsize=16, fontweight='bold')

# Сетка
ax.grid(True, linestyle='--', alpha=0.5)

# Легенда
ax.legend(loc='upper left', fontsize=14, framealpha=0.9, shadow=True)

# Подписи значений
for i, value in enumerate(sales):
    ax.text(i, value + 8, str(value), ha='center', fontsize=11, fontweight='bold')

for i, value in enumerate(sales_2024):
    ax.text(i, value - 12, str(value), ha='center', fontsize=11, fontweight='bold', color='#E74C3C')

# Настройка осей
ax.set_ylim(80, 240)
ax.tick_params(axis='both', labelsize=12)

# Сохраняем
plt.tight_layout()
plt.savefig('sales_presentation.png', dpi=150, bbox_inches='tight')
plt.show()

Задачи для закрепления

Задача 1. Создай фигуру размером 10×6 дюймов с разрешением 150 dpi.

Задача 2. Добавь заголовок «Мой график» размером 20, жирный.

Задача 3. Добавь подписи осей X — «Время», Y — «Значение».

Задача 4. Добавь сетку с пунктирной линией и прозрачностью 0.5.

Задача 5. Сохрани график в файл с качеством 300 dpi.

Ответы:

Задача 1.

plt.figure(figsize=(10, 6), dpi=150)

Задача 2.

plt.title('Мой график', fontsize=20, fontweight='bold')

Задача 3.

plt.xlabel('Время', fontsize=14)
plt.ylabel('Значение', fontsize=14)

Задача 4.

plt.grid(True, linestyle='--', alpha=0.5)

Задача 5.

plt.savefig('graph.png', dpi=300, bbox_inches='tight')

Нюансы и подводные камни

figsize и dpi

figsize и dpi влияют на размер при сохранении:

  • Ширина в пикселях = figsize[0] * dpi
  • Высота в пикселях = figsize[1] * dpi

Для экрана (72 dpi) размер (8, 5) = 576×360 пикселей.
Для печати (300 dpi) тот же (8, 5) = 2400×1500 пикселей.

Проблемы с русским текстом

Если русский текст отображается как квадратики, укажи шрифт:

plt.rcParams['font.family'] = 'DejaVu Sans'

Частые ошибки и как их избежать

Ошибка 1: Создание фигуры после построения графика

# Неправильный порядок
plt.plot(x, y)
plt.figure(figsize=(10, 6))

# Правильный порядок
plt.figure(figsize=(10, 6))
plt.plot(x, y)

Ошибка 2: Забыл параметр dpi при сохранении

# Низкое качество
plt.savefig('graph.png')

# Высокое качество
plt.savefig('graph.png', dpi=300)

Ошибка 3: Слишком мелкий текст

Для презентаций текст должен быть не меньше 14–16 размера.

Шпаргалка

Что нужноКак пишется
Размер фигурыplt.figure(figsize=(10, 6))
Разрешениеplt.figure(dpi=150)
Заголовокplt.title('Текст', fontsize=16)
Подпись Xplt.xlabel('Текст', fontsize=14)
Подпись Yplt.ylabel('Текст', fontsize=14)
Сеткаplt.grid(True, linestyle='--', alpha=0.5)
Легендаplt.legend(loc='best', fontsize=12)
Сохранитьplt.savefig('name.png', dpi=300)
Глобальные шрифтыplt.rcParams['font.size'] = 14

Заключение

Сегодня мы научились:

  • Задавать размер фигуры через figsize
  • Управлять разрешением через dpi
  • Добавлять заголовок и подписи осей
  • Настраивать шрифты глобально
  • Делать графики готовыми для презентаций

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×