Python как вывести несколько графиков

Подзаголовки Matplotlib – Построение Нескольких Графиков С Использованием Matplotlib

В этой статье мы узнаем, как создавать подзаголовки Matplotlib.

Автор: Pankaj Kumar
Дата записи

В этой статье мы узнаем, как создавать подзаголовки Matplotlib.

На практике нам часто требуется более одного графика, чтобы визуализировать переменные, именно тогда в картину вступают подзаголовки. Метод подзаголовка Matplotlib – это удобная функция, предоставляемая для создания более одного графика на одном рисунке.

Создание базового графика С помощью Matplotlib

Создание графика в Matplotlib-простая задача, и ее можно выполнить с помощью одной строки кода вместе с некоторыми входными параметрами. В приведенном ниже коде показано, как сделать простой график с одной фигурой.

plt.plot() отображает линейный график входных данных.

Создание Подзаголовков Matplotlib

Теперь подумайте о ситуации, когда нам нужно иметь несколько графиков для объяснения наших данных. Например, у нас есть набор данных с температурой и количеством осадков в качестве переменных, и нам нужно визуализировать эти данные.

Одна вещь, которая приходит на ум, – это построить обе переменные на одном графике, но шкала измерения температуры (Кельвин) отличается от шкалы количества осадков(мм).

Читайте также:  Pin up ru как вывести

Здесь нам нужен отдельный сюжет для обоих, чтобы иметь визуальную интерпретацию. Подзаголовок Matplotlib-это то, что нам нужно для создания нескольких сюжетов, и мы собираемся подробно изучить это.

1. Использование метода subplots()

Давайте посмотрим на использование matplotlib.subplots|/.

Метод matplotlib subplots() требует в качестве входного аргумента несколько строк и несколько столбцов и возвращает объект figure и объект axes.

Доступ к каждому объекту оси можно получить с помощью простой индексации. И после выбора необходимых осей для построения графика процедура построения графика будет следовать своим обычным курсом, как мы это делали в приведенном выше коде.

Давайте создадим 4 подзаголовка, расположенных в виде сетки.

2. Доступ к подзаголовкам

Доступ к отдельным осям очень прост. Давайте построим несколько графиков на первом и последнем подзаголовке.

Думайте о каждой оси как о некоторых объектах, расположенных в 2D-массиве, доступ к каждому подзаголовку аналогичен доступу к элементам из 2D-массива.

  • ax[0][0] означает, что мы сначала выбрали первую строку (индекс 0) и первый элемент из этой строки (индекс 0).
  • ax[1][1] означает, что мы сначала выбрали вторую строку (индекс 1) и второй элемент из этой строки (индекс 1).

3. Подзаголовки Matplotlib с общей осью

Во многих приложениях нам нужно, чтобы оси подзаголовков были выровнены друг с другом. Метод matplotlib subplots() принимает еще два аргумента, а именно sharex и sharey , так что все оси подзаголовков имеют одинаковый масштаб.

4. Использование метода add_subplot()

add_subplot является атрибутом объекта Matplotlib figure . Он используется всякий раз, когда мы хотим добавить подзаголовки к нашему рисунку один за другим.

Давайте продемонстрируем это на примере кода.

В приведенном выше коде атрибут add_subplot объекта figure требует в качестве входного аргумента несколько строк и столбцов, а также индекс подзаголовка.

Но здесь вместо того, чтобы индексировать подзаголовки в виде 2D-массивов, нам просто нужно передать целое число, похожее на число рисунка.

рис.add_subplot(2, 2, 1) в приведенном выше коде сначала будет создана сетка подзаголовков 2×2 и возвращен объект 1-го подзаголовка, на котором мы можем построить наши данные.

Вывод

В этой статье мы рассмотрели, как мы можем визуализировать данные на нескольких графиках на одном рисунке, использование метода subplots и количество способов создания подзаголовков.

Источник

Matplotlib. Урок 2. Работа с инструментом pyplot

Практически все задачи, связанные с построением графиков, можно решить, используя возможности, которые предоставляет модуль pyplot . В рамках данного урока мы рассмотрим базовые возможности модуля для построения графиков.

Для того, чтобы запустить любой из примеров, продемонстрированных в первом уроке (“ Matplolib . Урок 1. Быстрый старт), вам предварительно нужно было импортировать pyplot из библиотеки Matplolib . В настоящее время среди пользователей этого инструмента принято импорт производить следующим образом:

Создатели Matplolib постарались сделать его похожим в использовании на MATLAB , так что если вы знакомы с последним, то разобраться с библиотекой будет проще.

Основы работы с pyplot

Построение графиков

Основным элементом изображения, которое строит pyplot является Фигура (Figure), на нее накладываются один или более графиков, осей, надписей и т.п. Для построения графика используется команда plot() . В самом минимальном варианте можно ее использовать без параметров:

В результате будет выведено пустое поле:

Далее команду импорта и magic -команду для Jupyter (первая и вторая строки приведенной выше программы) мы использовать не будем.

Если в качестве параметра функции plot() передать список, то значения из этого списка будут отложены по оси ординат (ось y ), а по оси абсцисс (ось x ) будут отложены индексы элементов массива:

Для того, чтобы задать значения по осям x и y необходимо в plot() передать два списка:

Текстовые надписи на графике

Наиболее часто используемые текстовые надписи на графике это:

  • наименование осей;
  • наименование самого графика;
  • текстовое примечание на поле с графиком;
  • легенда.

Рассмотрим кратко данные элементы, более подробный рассказ о них будет в одном из ближайших уроков.

Наименование осей

Для задания подписи оси x используется функция xlabel() , оси yylabel(). Разберемся с аргументами данных функций. Здесь и далее аргументы будем описывать следующим образом:

Для функций xlabel()/ylabel() основными являются следующие аргументы:

  • xlabel (или ylabel):str
    • Текст подписи.
  • labelpad : численное значение либо None; значение по умолчанию: None
    • Расстояние между областью графика, включающую оси, и меткой.

Функции xlabel()/ylabel() принимают в качестве аргументов параметры конструктора класса matplotlib.text.Text , некоторые из них нам могут пригодиться:

  • fontsize или size: число либо значение из списка: <‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’>.
    • Размер шрифта.
  • fontstyle: значение из списка: <‘normal’, ‘italic’, ‘oblique’>.
    • Стиль шрифта.
  • fontweight: число в диапазоне от 0 до 1000 либо значение из списка: <‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’>.
    • Толщина шрифта.
  • color: одни из доступных способов определения цвета см. Цвет линии.
    • Цвет шрифта.

Аргументов у этих функций довольно много и они позволяют достаточно тонко настроить внешний вид надписей. В рамках этого урока мы только начинаем знакомиться с инструментом pyplot поэтому не будем приводить весь список.

Заголовок графика

Для задания заголовка графика используется функция title() :

Из параметров отметим следующие:

Для функции title() также доступны параметры конструктора класса matplotlib.text.Text , часть из них представлена в описании аргументов функций xlabel() / ylabel().

Текстовое примечание

За размещение текста на поле графика отвечает функция text() , которой вначале передаются координаты позиции надписи, после этого – текст самой надписи.

Легенда

Легенда будет размещена на графике, если вызвать функцию legend() , в рамках данного урока мы не будем рассматривать аргументы этой функции.

Разместим на уже знакомом нам графике необходимый набор подписей.

К перечисленным опциям мы добавили сетку, которая включается с помощью функции grid(True) .

Работа с линейным графиком

В этом параграфе мы рассмотрим основные параметры и способы их задания для изменения внешнего вида линейного графика. Matplotlib предоставляет огромное количество инструментов для построения различных видов графиков. Так как наиболее часто встречающийся вид графика – это линейный, ему и уделим внимание. Необходимо помнить, что настройка графиков других видов, будет осуществляться сходным образом.

Параметры, которые отвечают за отображение графика можно задать непосредственно в самой функции plot() :

Либо воспользоваться функцией setp() , через которую можно модифицировать нужные параметры:

Стиль линии графика

Стиль линии графика задается через параметр linestyle , который может принимать значения из приведенной ниже таблицы.

Значение параметра Описание
‘-‘ или ‘solid’ Непрерывная линия
‘–‘ или ‘dashed’ Штриховая линия
‘-.’ или ‘dashdot’ Штрихпунктирная линия
‘:’ или ‘dotted’ Пунктирная линия
‘None’ или ‘ ‘ или ” Не отображать линию

Стиль линии можно передать сразу после указания списков с координатами без указания, что это параметр linewidth .

Либо можно воспользоваться функцией setp() :

Результат будет тот же, что на рисунке выше.

Для того, чтобы вывести несколько графиков на одном поле необходимо передать соответствующие наборы значений в функцию plot() . Построим несколько наборов данных и выведем их с использованием различных стилей линии:

Тот же результат можно получить, вызвав plot() для построения каждого графика по отдельности. Если вы хотите представить каждый график отдельно на своем поле, то используйте для этого subplot() (см. Размещение графиков на разных полях)

Цвет линии

Задание цвета линии графика производится через параметр color (или c , если использовать сокращенный вариант). Значение может быть представлено в одном из следующих форматов:

  • RGB или RGBA кортеж значений с плавающей точкой в диапазоне [0, 1] (пример: (0.1, 0.2, 0.3)
  • RGB или RGBA значение в hex формате (пример: ‘#0a0a0a’)
  • строковое представление числа с плавающей точкой в диапазоне [0, 1] (определяет цвет в шкале серого) (пример: ‘0.7’)
  • символ из набора < ‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, ‘w’ >
  • имя цвета из палитры X11 / CSS4
  • цвет из палитры xkcd( https://xkcd.com/color/rgb/ ), должен начинаться с префикса ‘xkcd :’
  • цвет из набора Tableau Color (палитра T10 ), должен начинаться с префикса ‘tab :’

Если цвет задается с помощью символа из набора < ‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, ‘w’ >, то он может быть совмещен со стилем линии в рамках параметра fmt функции plot() .

Например штриховая красная линия будет задаваться так: ‘–r’, а штрих пунктирная зеленая так ‘-.g’

Тип графика

До этого момента мы работали только с линейными графиками, функция plot() позволяет задать тип графика: линейный либо точечный, при этом для точечного графика можно указать соответствующий маркер. Приведем пару примеров:

Размер маркера можно менять, об этом более подробно будет рассмотрено в уроке, посвященном точечным графикам.

Размещение графиков на разных полях

Существуют три основных подхода к размещению нескольких графиков на разных полях:

  • использование функции subplot() для указания места размещения поля с графиком;
  • использование функции subplots() для предварительного задания сетки, в которую будут укладываться поля;
  • использование GridSpec , для более гибкого задания геометрии размещения полей с графиками в сетке.

В этом уроке будут рассмотрены первые два подхода.

Работа с функцией subplot()

Самый простой способ представить графики в отдельных полях – это использовать функцию supplot() для задания их мест размещения. До этого момента мы не работали с Фигурой ( Figure ) напрямую, значения ее параметров, задаваемые по умолчанию, нас устраивали. Для решения текущей задачи придется один из параметров – размер подложки, задать вручную. За это отвечает аргумент figsize функции figure() , которому присваивается кортеж из двух float элементов, определяющих высоту и ширину подложки.

После задания размера, указывается местоположение, куда будет установлено поле с графиком с помощью функции subplot(). Чаще всего используют следующие варианты вызова subplot:

subplot(nrows, ncols, index)

  • pos:int
    • Позиция, в виде трехзначного числа, содержащего информацию о количестве строк, столбцов и индексе, например 212, означает подготовить разметку с двумя строками и одним столбцов, элемент вывести в первую позицию второй строки. Этот вариант можно использовать, если количество строк и столбцов сетки не более 10, в ином случае лучше обратиться к первому варианту.

Рассмотрим на примере работу с данными функциями:

Второй вариант использования subplot():

Работа с функцией subplots()

Одно из неудобств использования последовательного вызова функций subplot() заключается в том, что каждый раз приходится указывать количество строк и столбцов сетки. Для того, чтобы этого избежать, можно воспользоваться функцией subplots(), из всех ее параметров, нас пока интересуют только первые два, через них передается количество строк и столбцов сетки. Функция subplots() возвращает два объекта, первый – это Figure , подложка, на которой будут размещены поля с графиками, второй – объект или массив объектов Axes , через которые можно получить полных доступ к настройке внешнего вида отображаемых элементов.

Решим задачу вывода четырех графиков с помощью функции subplots() :

Результат будет аналогичный тому, что приведен в разделе “Работа с функцией subplot() ”.

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Источник

Оцените статью