Фигуры и оси
Разберитесь с моделью построения графиков
«Фигуры и оси» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Модель построения графиков
Matplotlib — базовая библиотека Python для построения графиков. Чтобы эффективно работать с ней, необходимо понимать её двухуровневую модель: рисунок и область построения.
Рисунок — это общее окно или страница, на которой отображается всё содержимое. Область построения — отдельный график внутри рисунка со своей системой координат по осям x и y.
- Один рисунок может содержать несколько областей построения
- Именно в каждой области построения находятся данные
Рисунок, область построения и ось
Три термина легко перепутать:
- Рисунок — всё изображение, контейнер
- Область построения — отдельная область графика (это специальный термин, а не форма множественного числа слова «ось»)
- Ось — числовая линия оси x или y внутри области построения
Итак, рисунок содержит области построения, а каждая область построения содержит два (или три) объекта осей.
Создание рисунка и области построения
Рекомендуемый способ начать работу — использовать plt.subplots(). За один вызов эта функция возвращает рисунок и область построения.
Саму модель легко понять даже без отрисовки. Здесь мы смоделируем, что представляют собой эти объекты.
fig = {'type': 'Figure', 'axes': []}
ax = {'type': 'Axes', 'parent': 'Figure'}
fig['axes'].append(ax)
print('Figure holds', len(fig['axes']), 'axes')
print('Axes parent is the', ax['parent'])Интерфейс pyplot
Matplotlib предлагает два стиля. Стиль pyplot, основанный на состоянии, использует plt.plot() и автоматически отслеживает текущий рисунок. Объектно-ориентированный стиль явно использует ax.plot().
Для всего, что выходит за рамки быстрого наброска, предпочтителен объектно-ориентированный стиль. Он понятнее, когда у Вас несколько областей построения.
Почему объектно-ориентированный стиль лучше
Когда Вы вызываете plt.title('X'), функция применяет заголовок к той области построения, которая в данный момент считается текущей. При наличии нескольких подграфиков это становится неоднозначным.
С помощью ax.set_title('X') ничего угадывать не нужно: метод обращается именно к названной Вами области построения.
Системы координат
Каждая область построения преобразует значения данных в положения на экране. Координаты данных отражают смысл Ваших чисел, а область построения масштабирует их под размер области рисования.
Смоделировать это преобразование можно с помощью обычной математики.
data_min, data_max = 0, 100
pixel_min, pixel_max = 0, 400
def to_pixels(value):
frac = (value - data_min) / (data_max - data_min)
return pixel_min + frac * (pixel_max - pixel_min)
for v in [0, 25, 50, 100]:
print('data', v, '->', to_pixels(v), 'px')Размер рисунка и DPI
Размер рисунка задаётся в дюймах, а разрешение — в точках на дюйм (DPI). Размер в пикселях равен произведению этих двух величин.
Например, рисунок размером 6 × 4 дюйма при разрешении 100 DPI будет иметь размер 600 × 400 пикселей.
width_in, height_in = 6, 4
dpi = 100
print('Pixels:', width_in * dpi, 'x', height_in * dpi)Добавление областей построения вручную
Помимо plt.subplots(), Вы можете добавить область построения в точно заданный прямоугольник с помощью fig.add_axes([left, bottom, width, height]), где каждое значение представляет собой долю рисунка от 0 до 1.
Так создаются вставные графики и пользовательские макеты.
Текущий рисунок
Pyplot хранит реестр рисунков и указатель на текущий рисунок. Функция plt.gcf() получает текущий рисунок, а plt.gca() — текущую область построения.
Эти возможности главным образом поддерживают стиль, основанный на состоянии. В объектно-ориентированном коде вместо этого Вы храните собственные ссылки.
Отображение и закрытие
plt.show() отображает все открытые рисунки в окне. Функция plt.close() освобождает рисунок. В скриптах, создающих много рисунков, их закрытие предотвращает накопление данных в памяти.
В блокнотах рисунок автоматически отображается непосредственно в документе.
Мысленный контрольный список
Прежде чем что-либо рисовать, ответьте на следующие вопросы:
- Сколько рисунков мне понадобится?
- Сколько осей должно быть в каждом рисунке?
- К какой области построения относится каждая часть данных?
Если сначала ответить на эти вопросы, объектно-ориентированный API станет интуитивно понятным.
Быстрая проверка
Проверьте, насколько хорошо вы поняли модель рисунков и областей построения.
Итоги
Вы изучили основную модель Matplotlib:
- Рисунок — контейнер, размер которого задаётся произведением размера в дюймах на DPI
- Область построения — отдельный график со своими координатами
- Ось — числовая ось x или y
- Отдавайте предпочтение объектно-ориентированному стилю с помощью
fig, ax = plt.subplots()
С такой мысленной моделью любые последующие настройки становятся предсказуемыми.
Часто задаваемые вопросы
Урок «Фигуры и оси» бесплатный?
Да — полный текст урока «Фигуры и оси» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Фигуры и оси»?
Разберитесь с моделью построения графиков Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Фигуры и оси»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.