4. Основные компоненты matplotlib
MPL очень большая библиотека, но по своей сути она состоит из небольшого количества базовых компонентов:
Каждая область Axes содержит XAxis и YAxis. Они содержат, деления, метки и прочие вспомогательные атрибуты. В Этом уроке мы будем контролировать тики, метки и пределы данных через другие механизмы, поэтому подробно рассматривать оси мы не будем.
4.1. Начало работы
Давайте попробуем выполним следующий код:
В том что Figure и Axes это разные области можно легко убедиться если изменить их цвет:
Кстати, Axes должна принадлежать только одной области Figure. Как правило, всегда сначала создается область Figure, а затем с помощью add_subplot() в Figure размещается одна или несколько областей Axes.
Затем нажатием клавиши стрелка вниз найдите метод set_facecolor и нажмите Enter:

После этого останется только добавить цвет в виде строки ( ‘green’ ) и все.
Тоже самое мы можем проделать и с Axes. Кстати, именно Axes вам придется видоизменять чаще всего, поэтому давайте установим побольше параметров для данной области:
Хотя мы могли бы выполнить это более коротким способом:
Данный способ хорош если вы обладаете некоторым опытом и помните имена всех параметров наизусть. Новичкам я все-таки рекомендую явный способ установки параметров: так и быстрее (благодаря автодополнению) и очевиднее.
В таких случаях первый способ, снова, кажется более простым. Но все же второй способ позволяет создавать код который легко понять и в котором легко ориентироваться, а это тоже очень дорогого стоит.
4.2. Отображение данных на графике
Давайте построим простой график на котором будет присутствовать отображение одних данных точками, а других линиями:
Нарисованные данные так же поддерживают самые разные параметры внешнего вида:
4.3. Методы Axes и pyplot
Но мы больше не будем так делать, потому что «Явное лучше чем неявное». Нет, если мы строим так сказать «одноразовые графики» с небольшими скриптами, только ради того что бы что-то быстро визуализировать, то от краткости скриптов мы только выигрываем. Однако, если нам придется работать с несколькими областями Axes или придется создавать большие скрипты для построения сложной графики, то использование явных определений Figure и Axes сделает код более очевидным и понятным, пускай даже за счет увеличения его объема.
4.4. Несколько Axes на одной Figure
В этом примере, так же как и раньше, мы сначала создали область Figure, а затем с помощью команды fig.add_subplot() начали добавлять, одну за другой область Axes (ax_1, ax_2, ax_3, ax_4). Причем заметьте, каждая область Axes является независимой от других, то есть на на них могут быть нарисованы самые разные графики и установлены самые разные параметры внешнего вида.
Индексирование полученных ячеек начинается с левого верхнего угла, выполняется построчно слева-направо и заканчивается в правом нижнем углу:
Заполнять областями Axes всю область Figure не обязательно:
Каждый отдельный вызов add_subplot() выполняет разбивку Figure, так как как указано в его параметрах и не зависит от предыдущих разбиений:
Такое поведение метода add_subplot() позволяет располагать графики как вам необходимо. Области Axes могут перекрывать друг-друга, быть разного размера или разделенными некоторым пространством, впрочем, как и размещаться в произвольных местах:
4.5. subplots()
Конечно, такой способ размещения некоторого количества областей Axes на Figure довольно гибок, но на практике функция plt.subplots(nrows, ncols) оказывается гораздо удобнее:
Если вглядеться в вывод, то становится видно, что plt.subplots(nrows, ncols) создает кортеж из двух элементов:
Для дальнейшей работы с данными областями нам необходимо распаковать данный кортеж, что мы и делаем в строке:
Но если для каждой области нам необходимо установить одинаковые параметры, то это можно сделать в цикле:
Хотя, зачастую, даже заголовки можно установить в том же самом цикле:
По умолчанию количество строк и столбцов в методе subplots равно 1, что удобно для быстрого создания Figure с одной областью Axes:
Matplotlib. Урок 2. Работа с инструментом pyplot
Основы работы с pyplot
Построение графиков
В результате будет выведено пустое поле:
Если в качестве параметра функции plot() передать список, то значения из этого списка будут отложены по оси ординат (ось y ), а по оси абсцисс (ось x ) будут отложены индексы элементов массива:
Для того, чтобы задать значения по осям x и y необходимо в plot() передать два списка:
Текстовые надписи на графике
Наиболее часто используемые текстовые надписи на графике это:
Рассмотрим кратко данные элементы, более подробный рассказ о них будет в одном из ближайших уроков.
Наименование осей
Для функций xlabel()/ylabel() основными являются следующие аргументы:
Аргументов у этих функций довольно много и они позволяют достаточно тонко настроить внешний вид надписей. В рамках этого урока мы только начинаем знакомиться с инструментом pyplot поэтому не будем приводить весь список.
Заголовок графика
Для задания заголовка графика используется функция title() :
Из параметров отметим следующие:
Текстовое примечание
Легенда
Разместим на уже знакомом нам графике необходимый набор подписей.
Работа с линейным графиком
В этом параграфе мы рассмотрим основные параметры и способы их задания для изменения внешнего вида линейного графика. Matplotlib предоставляет огромное количество инструментов для построения различных видов графиков. Так как наиболее часто встречающийся вид графика – это линейный, ему и уделим внимание. Необходимо помнить, что настройка графиков других видов, будет осуществляться сходным образом.
Параметры, которые отвечают за отображение графика можно задать непосредственно в самой функции plot() :
Стиль линии графика
| Значение параметра | Описание |
| ‘-‘ или ‘solid’ | Непрерывная линия |
| ‘–‘ или ‘dashed’ | Штриховая линия |
| ‘-.’ или ‘dashdot’ | Штрихпунктирная линия |
| ‘:’ или ‘dotted’ | Пунктирная линия |
| ‘None’ или ‘ ‘ или ” | Не отображать линию |
Либо можно воспользоваться функцией setp() :
Результат будет тот же, что на рисунке выше.
Тот же результат можно получить, вызвав plot() для построения каждого графика по отдельности. Если вы хотите представить каждый график отдельно на своем поле, то используйте для этого subplot() (см. Размещение графиков на разных полях)
Цвет линии
Например штриховая красная линия будет задаваться так: ‘–r’, а штрих пунктирная зеленая так ‘-.g’
Тип графика
До этого момента мы работали только с линейными графиками, функция plot() позволяет задать тип графика: линейный либо точечный, при этом для точечного графика можно указать соответствующий маркер. Приведем пару примеров:
Размер маркера можно менять, об этом более подробно будет рассмотрено в уроке, посвященном точечным графикам.
Размещение графиков на разных полях
Существуют три основных подхода к размещению нескольких графиков на разных полях:
В этом уроке будут рассмотрены первые два подхода.
Работа с функцией subplot()
После задания размера, указывается местоположение, куда будет установлено поле с графиком с помощью функции subplot(). Чаще всего используют следующие варианты вызова subplot:
subplot(nrows, ncols, index)
Рассмотрим на примере работу с данными функциями:
Второй вариант использования subplot():
Работа с функцией subplots()
Решим задачу вывода четырех графиков с помощью функции subplots() :
Результат будет аналогичный тому, что приведен в разделе “Работа с функцией subplot() ”.
P.S.
Matplotlib subplot – полезное иллюстрированное руководство
Все, что вам нужно знать, чтобы освоить функцию Subplot MATPLOTLIB [+ бонусное видео]
Слишком много вещей, происходящих в одном сюжете? Нет проблем – используйте несколько подломов!
Этот глубокий учебник показывает вам все, что вам нужно знать, чтобы начать работу с MatPlotlib subplot () функция.
Если вы хотите, просто нажмите «Играть» и посмотрите на видео об объяснении. Затем я направляю вас через учебное пособие:
Чтобы создать SULTLOT MATPLOTLIB с любым количеством строк и столбцов, используйте plt.subplot () функция.
Требуется 3 аргумента, все они являются целыми числами и позиционными только точкой, то есть. Вы не можете использовать ключевые слова для их уточнения.
Итак, plt.subplot (3, 1, 1) имеет 3 ряда, 1 столбец (сетка 3 х 1) и выбирает Subplot с индексом 1.
Пример субплота Matplotlib
Аргументы для plt.subplot () Интуитивно понятные:
Первые два – Nrows и Ncols – подпитываются для количества строк и количества столбцов соответственно.
Если вы хотите 2 × 2 сетку, установить и. Для сетки 3 × 1 это и.
Индекс – это Subplot, который вы хотите выбрать. Код, который вы пишете сразу после того, как он нарисован на этом Subplot. В отличие от всего остального в вселенной Python, индексация начинается с 1, а не 0. Он продолжается от левой вправо так же, как вы читаете.
Итак, для 2 х 2 сетки индексы
Для 3 х 1 сетки, они
Аргументы для plt.subplot () Только позиционные. Вы не можете пройти их в качестве аргументов ключевых слов.
Тем не менее, запятая между значениями является необязательной, если каждое значение является целым числом менее 10.
Таким образом, следующие эквивалентны – они оба выбирают индекс 1 из сетки 3 × 1.
Я буду чередовать, включая и исключая запятые, чтобы помочь вашему обучению.
Давайте посмотрим на макет Subplot по умолчанию и общий контур для вашего кода.
Это выглядит нормально, но этикетки оси X трудно прочитать на верхних 2 подломов.
У вас есть несколько способов решить эту проблему.
Во-первых, вы можете вручную отрегулировать XTicks с matplotlib xticks Функция – PLT.xticks () – и либо:
Оба эти методы работают, но они справляются. Кроме того, вы не можете автоматизировать их, что раздражает для программистов США.
У вас есть эта проблема Ticks, когда вы создаете подломы. К счастью, Matplotlib Tight_layout Функция была создана для решения этого.
Matplotlib tight_layout.
Призывая plt.tight_layout () MATPLOTLIB автоматически регулирует следующие части графика, чтобы убедиться, что они не перекрываются:
Обратите внимание, что эта функция является экспериментальной. Это не идеально, но часто делает действительно хорошую работу. Кроме того, обратите внимание, что он не работает слишком хорошо с легендами или Colorbars – вы увидите, как работать с ними позже.
Давайте посмотрим самый простой пример без каких-либо меток или названий.
Сейчас существует много места между участками. Вы можете настроить это с Pad ключевое слово. Он принимает поплавок в диапазоне [0,0, 1,0] и является частью размера шрифта.
Теперь между сюжетами меньше места между участками, но все все еще читаемо. Я использую plt.tight_layout () В каждом сюжете (без колобаров или легендов) и я рекомендую вам также сделать. Это простой способ сделать ваши участки великолепны.
Проверьте Документы больше информации и аргументов, которые Tight_layout в matplotlib принимает.
Теперь давайте посмотрим, как добавить больше информации в наши подложки в Matplotlib.
Matplotlib Subplot Название
Вы можете добавить заголовок на каждый Subplot с PLT.TITLE () функция.
Matplotlib subplot общий заголовок
Добавьте общий заголовок в Subplot в MatPlotlib с plt.suptitle () Функция (она означает «супер название»).
Высота subplot matplotlib
Чтобы изменить высоту субплата в MatPlotlib, см. Следующий раздел.
Размер subplot matplotlib
У вас есть полный контроль над размером подломов в Matplotlib.
Вы можете либо изменить размер всего Рисунок или размер Подломы самих себя.
Давайте посмотрим на изменение Рисунок Отказ
Матплотлиб Рисунок Размер
Это общее окно/страница, на которой все нарисовано. Вы можете иметь несколько независимых цифр и Цифры может содержать несколько Подразделение
Другими словами, Рисунок Пустой холст вы «краска» все ваши участки.
Если вы довольны размером ваших подломов, но вы хотите, чтобы окончательное изображение было больше/меньше, измените Рисунок Отказ Сделайте это в верхней части вашего кода с Матплотлиб Рисунок Функция – PLT.Figure () Отказ
Перед кодированием любых подломов звоните PLT.Figure () и укажите Рисунок Размер с фигес аргумент Принимает кортеж из 2 чисел – (ширина, высота) изображения в дюймах.
Выше я создал участок 3 дюйма в ширину и 6 дюймов длиннее – plt.figure (figsize = (3, 6)) Отказ
Вы можете установить более общее Рисунок Размер с matplotlib figaspect функция. Это позволяет установить соотношение сторон (высоту/ширина) из Рисунок Отказ
Выше я создал Рисунок вдвое больше, чем он широко, установив figsize = plt.figaspect (2) Отказ
Примечание. Помните формулу соотношения соотношения аспектов (высота/ширина), вспоминая, что Высота на первый взгляд в алфавите.
Теперь давайте посмотрим на положить разные размеры Подломы на один Рисунок Отказ
MATPLOTLIB подкруты разные размеры
Самая сложная часть создания Рисунок с разными размерами Подломы В Matplotlib выясняется, какая фракция каждая Subplot занимает.
Итак, вы должны знать, на что вы стремитесь к началу. Вы можете набросать его на бумаге или нарисовать фигуры в PowerPoint. Как только вы сделали это, все остальное намного проще.
Я собираюсь создать эту форму
Я пометил фракцию каждый Subplot занимает, так как нам нужно это для нашего plt.subplot () звонки.
Я сначала создадим самую большой подборку и остальные в порядке убывания.
Обратите внимание, что на изображении синие номера являются значениями индекса каждый Subplot имеет.
Теперь выберите нижнюю левую Subplot В A 2 × 2 GRID I.E. индекс = 3
Наконец, выберите два верхних Подломы На левой стороне 4 × 2 сетки I.E. индекс = 1 и index = 3 Отказ
Когда вы положите это в целом, вы получите
Идеальный! Ломать Подломы вниз на их отдельные части и зная форму, которую вы хотите, делает все проще.
Размер Subplot Matplotlib отличается
С функцией Subplot MatPlotlib вы можете Только создать Подломы То есть 1/х Отказ
Невозможно создать вышеуказанный участок в Matplotlib с использованием plt.subplot () функция. Однако, если вы используете MATPLOTLIB подломов Функция или Gridspec Тогда это можно сделать.
Matplotlib subplts_adjust.
Если вы не довольны расстоянием между участками, которые plt.tight_layout () Предоставляет, вручную отрегулировать его с помощью plt.subplots_adjust () Отказ
Требуется 6 необязательных, самоуверенных аргументов ключевых слов. Каждый извлекает поплавок в диапазоне [0,0, 1,0], и они являются частью размера шрифта:
В этом примере я уменьшил как высоту, так и ширину для просто 0,05 Отказ Сейчас вряд ли нет места между участками.
Чтобы избежать нагрузок аналогичных примеров, играйте с аргументами самостоятельно, чтобы почувствовать, как работает эта функция.
Matplotlib subplot dpi.
Точки на дюйм (DPI) – это мера разрешения принтера. Это количество цветных точек, помещенных на каждый квадратный дюйм бумаги, когда он напечатан. Чем больше точек у вас есть, тем выше качество изображения. Если вы собираетесь распечатать свой участок на большом плакате, это хорошая идея использовать большой DPI.
DPI для каждого Рисунок контролируется plt.rcparams Словарь ( Хотите освоить словари? Не стесняйтесь читать Учебное пособие в Ultimate Finxter ). Содержит все Конфигурация времени выполнения настройки. Если вы печатаете plt.rcparams На экран вы увидите все переменные, которые вы можете изменить. Мы хотим high.dpi Отказ
Давайте сначала сделаем простую строку сюжетом с DPI по умолчанию (72,0), а затем намного меньшее значение.
Рисунок С меньшим DPI меньше и имеет более низкое разрешение.
Если вы хотите навсегда изменить DPI всех MATPLOTLIB Цифры – или любое из настроек конфигурации выполнения – найдите matplotlibrc Файл в вашей системе и измените его.
Вы можете найти это, введя
После того, как вы нашли его, есть отмечает внутри, говоря вам, что все делает.
Межплотовое расстояние MATPLOTLIB
Функция plt.tight_layout () Решает большую часть ваших проблем между интервалом. Если этого недостаточно, назовите его по желанию Pad и пройти поплавок в диапазоне [0,0, 1,0]. Если это еще недостаточно, используйте plt.subplots_adjust () функция.
Я подробно объяснил оба этих функция дальше статьи.
MATPLOTLIB SUBPLOT COLORBAR
Добавление COLORBAR на каждый график такой же, как добавление заголовка – код его под plt.subplot () Позвоните, вы сейчас работаете. Давайте построим сетку 1 × 2, где каждый Subplot это тепловая карта случайно сгенерированных чисел.
Для получения дополнительной информации о случайном модуле Python, проверьте мою статью. Я использую Numpy Random Module ниже, но применяются те же идеи.
Во-первых, я создал немного (10, 10) Массивы, содержащие случайные числа от 0 до 1 с помощью NP.RANDOM.RANDOM () функция. Тогда я построил их как тепломаплы, используя plt.pcolormesh () Отказ Я сохранил результат и передал его на PLT.COLORBAR () Затем закончил сюжет.
Как это статья о Подломы Я не буду обсуждать Matplotlib Pcolormesh функционировать в деталях.
Поскольку эти сюжеты являются разными образцами тех же данных, вы можете построить их с тем же цветом и просто нарисовать одну крышу.
Чтобы нарисовать этот сюжет, используйте тот же код, что и выше и установите одинаковую Colormap в обоих Matplotlib Pcolormesh Звонки – cmap = ‘blues’ Отказ Затем нарисуйте колоритуру на второй подпункту.
Это не выглядит так хорошо, как указано выше Рисунок Так как Colorbar занимает пространство со второго Subplot Отказ К сожалению, вы не можете изменить это поведение – Корот-карлбар занимает пространство из Subplot Это нарисовано рядом с.
Можно Нарисуйте Colorbars над несколькими Подломы Но вам нужно использовать plt.subplots () функция. Я написал целое учебное пособие по этому – так что не стесняйтесь проверить эту более мощную функцию!
Matplotlib Subplot Grid
Я обсуждаю это подробно в своей статье на подломов MatPlotlib.
Резюме
Теперь вы знаете все, что нужно знать о функции Subplot в MatPlotlib.
Вы можете создавать сетки любого размера, который вы хотите, и рисуйте подломы любого размера – до тех пор, пока он занимает 1/х Th сюжета. Если вы хотите больше или меньше Рисунок Вы можете изменить его с PLT.Figure () функция. Кроме того, вы можете управлять DPI, интервал и установите заголовок.
Вооруженные этими знаниями, теперь вы можете сделать впечатляющие участки неограниченной сложности.
Но вы также обнаружили некоторые из пределов функции Subplot. И вы можете почувствовать, что это немного неуклюже, чтобы ввести plt.subplot () Всякий раз, когда вы хотите нарисовать новый.
Чтобы узнать, как создавать более подробные участки с меньшими строками кода, прочитайте мою статью о plt.subplots () (с «S» функцией.
Куда пойти отсюда?
Вы хотите, чтобы вы могли быть программистом на полный рабочий день, но не знаете, как начать?
Проверьте мой чистый вебинар на упаковке чистых ценностей, где я учу вас стать фрилансером Python за 60 дней или вернуть ваши деньги!
Неважно, если вы начинаете питон или Python Pro. Если вы не делаете шесть фигур/год с Python прямо сейчас, вы узнаете что-то из этого вебинара.
Это доказаны, методы NO-BS, которые получают ваши результаты быстро.
matplotlib.pyplot.subplots¶
Create a figure and a set of subplots.
This utility wrapper makes it convenient to create common layouts of subplots, including the enclosing figure object, in a single call.
Parameters nrows, ncols int, default: 1
Number of rows/columns of the subplot grid.
sharex, sharey bool or <'none', 'all', 'row', 'col'>, default: False
Controls sharing of properties among x (sharex) or y (sharey) axes:
True or ‘all’: x- or y-axis will be shared among all subplots.
False or ‘none’: each subplot x- or y-axis will be independent.
‘row’: each subplot row will share an x- or y-axis.
‘col’: each subplot column will share an x- or y-axis.
When subplots have a shared axis that has units, calling set_units will update each axis with the new units.
squeeze bool, default: True
If True, extra dimensions are squeezed out from the returned array of Axes :
if only one subplot is constructed (nrows=ncols=1), the resulting single Axes object is returned as a scalar.
for Nx1 or 1xM subplots, the returned object is a 1D numpy object array of Axes objects.
for NxM, subplots with N>1 and M>1 are returned as a 2D array.
If False, no squeezing at all is done: the returned Axes object is always a 2D array containing Axes instances, even if it ends up being 1×1.
subplot_kw dict, optional
Dict with keywords passed to the add_subplot call used to create each subplot.
gridspec_kw dict, optional
Dict with keywords passed to the GridSpec constructor used to create the grid the subplots are placed on.
**fig_kw
All additional keyword arguments are passed to the pyplot.figure call.
Returns fig Figure ax axes.Axes or array of Axes
ax can be either a single Axes object or an array of Axes objects if more than one subplot was created. The dimensions of the resulting array can be controlled with the squeeze keyword, see above.
Typical idioms for handling the return value are:
The names ax and pluralized axs are preferred over axes because for the latter it’s not clear if it refers to a single Axes instance or a collection of these.
























