0Pricing
Python Academy · Урок

Фигуры и оси

Разберитесь с моделью построения графиков

«Фигуры и оси» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Фигуры и оси
  2. Графики линий, столбцов и рассеяния
  3. Настройка графиков
  4. Подграфики и компоновка
← Назад к Python Academy