Несколько графиков Matplotlib

Мы можем использовать следующие в pyplotsubplot()иsubplots()методы для построения нескольких подграфиков.

subplot()Метод требует указания позиции при построении,subplots()Метод может сгенерировать несколько сразу; при вызове достаточно вызвать 'ax' у созданного объекта.

subplot

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

Приведённые выше функции делят всю область построения на nrows строк и ncols столбцов, затем нумеруют каждую подобласть слева направо и сверху вниз.1...NВерхняя левая подобласть имеет номер 1, нижняя правая область имеет номер N, а нумерацию можно задать черезindexпараметр.

Задайте numRows = 1, numCols = 2, то есть нарисуйте график в виде области изображения 1x2, соответствующие координаты:

(1, 1), (1, 2)

plotNum = 1, что соответствует координате (1, 1), то есть подграфику в первой строке и первом столбце.

plotNum = 2, что соответствует координате (1, 2), то есть подграфику в первой строке и втором столбце.

Пример

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])

plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

plt.suptitle("EXAMPLE subplot Test")
plt.show()

Отображаемый результат выглядит следующим образом:

Задайте numRows = 2, numCols = 2, то есть нарисуйте график в виде области изображения 2x2, соответствующие координаты:

(1, 1), (1, 2)
(2, 1), (2, 2)

plotNum = 1, что соответствует координате (1, 1), то есть подграфику в первой строке и первом столбце.

plotNum = 2, что соответствует координате (1, 2), то есть подграфику в первой строке и втором столбце.

plotNum = 3, что соответствует координате (2, 1), то есть подграфику во второй строке и первом столбце.

plotNum = 4, что соответствует координате (2, 2), то есть подграфику во второй строке и втором столбце.

Пример

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([0, 6])
y = np.array([0, 100])

plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")

#plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])

plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")

#plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])

plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("график 3")

#график 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])

plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("график 4")

plt.suptitle("EXAMPLE subplot Test")
plt.show()

Отображаемый результат выглядит следующим образом:

subplots()

Синтаксис метода subplots() следующий:

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
Описание параметра:

  • nrows: по умолчанию 1, задает количество строк диаграммы.
  • ncols: по умолчанию 1, задает количество столбцов диаграммы.
  • sharex、sharey: задает, будут ли оси x и y совместно использовать атрибуты, по умолчанию false, можно задать как 'none', 'all', 'row' или 'col'. False или none означает, что ось x или ось y каждого подграфика независима; True или 'all' означает, что все подграфики совместно используют ось x или ось y; 'row' задает, что каждый ряд подграфиков совместно использует ось x или ось y; 'col' задает, что каждый столбец подграфиков совместно использует ось x или ось y.
  • squeeze: логическое значение, по умолчанию True, указывает, что лишние размерности удаляются из возвращаемого объекта Axes. Для N*1 или 1*N подграфиков возвращается одномерный массив; для N*M, N>1 и M>1 возвращается двумерный массив. Если задано False, сжатие не выполняется и возвращается двумерный массив экземпляров Axes, даже если в итоге он имеет размер 1x1.
  • subplot_kw: Необязательный, тип словаря. Передайте ключевые слова словаря в add_subplot() для создания каждого подграфика.
  • gridspec_kw: Необязательный, тип словаря. Передайте ключевые слова словаря в конструктор GridSpec для создания подграфиков, размещенных в сетке.
  • **fig_kw: Передайте подробные именованные аргументы в функцию figure().

Пример

import matplotlib.pyplot as plt
import numpy as np

# Создайте тестовые данные -- Рисунок 1
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)

# Создать фигуру и подграфик -- Рисунок 2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Простой график')

# Создать два подграфика -- Рисунок 3
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Совместное использование оси Y')
ax2.scatter(x, y)

# Создать четыре подграфика -- Рисунок 4
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)

# Общий доступ к оси X
plt.subplots(2, 2, sharex='col')

# Общий доступ к оси Y
plt.subplots(2, 2, sharey='row')

# Общий доступ к осям X и Y
plt.subplots(2, 2, sharex='all', sharey='all')

# Это также делает общими оси X и Y
plt.subplots(2, 2, sharex=True, sharey=True)

# Создать фигуру с идентификатором 10, удалить её, если она уже существует
fig, ax = plt.subplots(num=10, clear=True)

plt.show()

Некоторые результаты отображения диаграмм приведены ниже:

Рисунок 1

Рисунок 2

Рисунок 3

Рисунок 4

Другие расширения