Использование библиотеки Matplotlib. Более гибкий способ расположения графиков с помощью subplot2grid
До сих пор для того, чтобы в одном окне расположить несколько графиков был только один способ - воспользоваться функцией subplot, которой в большинстве случаев вполне хватает. Но эта функция обладает одним недостатком - при ее использовании график может занимать только одну ячейку некой виртуальной таблицы. Да, для каждого графика можно задавать свою таблицу расположения (разное количество строк и столбцов), благодаря чему может казаться, что график занимает несколько ячеек, но все-равно такой подход довольно ограничен.
В Matplotlib есть более гибкий способ расположения графиков с помощью функции subplot2grid(), которая позволяет занимать графику несколько ячеек таблицы. Например, subplot2grid(), в отличие от subplot(), позволяет создать вот такое расположение осей для графиков:
В данном примере намеренно не приводится вывод самого графика, чтобы сосредоточить внимание на использовании функции subplot2grid().
Данная функция принимает следующие параметры:
- shape - кортеж из двух целых чисел. Задает виртуальную сетку таблицы. Этот параметр аналогичен первым двум параметрам функции subplot(). Это обязательный параметр функции subplot2grid().
- loc - кортеж из двух целых чисел. Задает координаты графика в сетке виртуальной таблицы, который будет выбран после вызова функции subplot2grid(). В отличие от функции subplot(), здесь координаты задаются набором двух чисел - номером строки и номером столбца (нумерация начинается с 0). Это обязательный параметр функции subplot2grid().
- rowspan - количество строк, которые будет занимать график в сетке виртуальной таблицы. Если этот параметр не задать, то график будет занимать одну строку.
- colspan - количество столбцов, которые будет занимать график в сетке виртуальной таблицы. Если этот параметр не задать, то график будет занимать один столбец.
Главное преимущество функции subplot2grid() над subplot() - это как раз последние два параметра. Функция subplot2grid() может принимать еще другие параметры, описанные в документации, но в данной статье они не рассматриваются.
Следующий показан код, который создает окно, показанное выше. Чтобы отобразить названия графиков в центре осей, использовалась функция text(), которая подробно разбиралась в статье Как выводить текст и настраивать его внешний вид. В комментариях кода еще раз более подробно описаны используемые параметры функции subplot2grid().
import matplotlib.pyplot as plt
if __name__ == '__main__':
plt.figure(figsize=(8, 8))
# Таблица графиков будет иметь три строки и три столбца (3, 3)
# Вывод будет осуществляться в ячейку с координатами (0, 0),
# то есть 0-ая строка и 0-ой столбец
# Оси для графика будут занимать две ячейки по горизонтали (colspan=2)
# и две ячейки по вертикали (rowspan=2)
plt.subplot2grid((3, 3), (0, 0), colspan=2, rowspan=2)
plt.text(0.5, 0.5, 'Graph1', ha='center')
# Вывод будет осуществляться в ячейку с координатами (0, 2),
# то есть 0-ая строка и 2-ой столбец (нумерация начинается с нуля)
# Оси для графика будут занимать две ячейки по вертикали (rowspan=2)
plt.subplot2grid((3, 3), (0, 2), rowspan=2)
plt.text(0.5, 0.5, 'Graph2', ha='center')
# Вывод будет осуществляться в ячейку с координатами (2, 0),
# то есть 2-ая строка и 0-ой столбец
# Оси для графика будут занимать одну ячейку по вертикали и горизонтали
# Аналог этого вызова - plt.subplot(3, 3, 7)
plt.subplot2grid((3, 3), (2, 0))
plt.text(0.5, 0.5, 'Graph3', ha='center')
# Вывод будет осуществляться в ячейку с координатами (2, 1),
# то есть 2-ая строка и 1-ый столбец
# Оси для графика будут занимать две ячейки по горизонтали (colspan=2)
plt.subplot2grid((3, 3), (2, 1), colspan=2)
plt.text(0.5, 0.5, 'Graph4', ha='center')
plt.show()
Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.