Привет! Ты уже научился строить графики в Matplotlib. Но они выглядят как-то не так: слишком маленькие, без подписей, не хватает сетки. Как сделать так, чтобы графики выглядели профессионально?
В этой статье мы разберём:
- Как задать размер графика (
figsize) - Как изменить разрешение (
dpi) - Как добавить заголовок и подписи осей
- Как настроить шрифты и сетку
- Как подготовить график для презентации
- Что нужно знать перед началом
- Основная часть
- Размер фигуры: figsize
- Разрешение: dpi
- Заголовок: title()
- Подписи осей: xlabel(), ylabel()
- Настройка шрифтов
- Сетка: grid()
- Легенда: legend()
- Сохранение с настройками
- Полный пример: подготовка графика для презентации
- Задачи для закрепления
- Нюансы и подводные камни
- figsize и dpi
- Проблемы с русским текстом
- Частые ошибки и как их избежать
- Ошибка 1: Создание фигуры после построения графика
- Ошибка 2: Забыл параметр dpi при сохранении
- Ошибка 3: Слишком мелкий текст
- Шпаргалка
- Заключение
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный 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) |
| Подпись X | plt.xlabel('Текст', fontsize=14) |
| Подпись Y | plt.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 - Добавлять заголовок и подписи осей
- Настраивать шрифты глобально
- Делать графики готовыми для презентаций





