Как настроить интервал между подграфиками Matplotlib


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

Самый простой способ решить эту проблему — использовать функцию Matplotlibtight_layout ().В этом руководстве объясняется, как использовать эту функцию на практике.

Создать подсюжеты

Рассмотрим следующее расположение 4 подзаголовков в 2 столбцах и 2 строках:

import matplotlib.pyplot as plt

#define subplots
fig, ax = plt.subplots(2, 2)

#display subplots 
plt.show()

Обратите внимание, как сюжеты немного перекрывают друг друга.

Отрегулируйте интервал между подграфиками, используя tight_layout()

Самый простой способ решить эту проблему перекрытия — использовать функцию Matplotlibtight_layout () :

import matplotlib.pyplot as plt

#define subplots
fig, ax = plt.subplots(2, 2)
fig. tight_layout ()

#display subplots 
plt.show()

Отрегулируйте интервал заголовков подзаголовков

В некоторых случаях у вас также могут быть названия для каждого из ваших сюжетов. К сожалению, даже функция tight_layout() приводит к перекрытию заголовков подзаголовков:

import matplotlib.pyplot as plt

#define subplots
fig, ax = plt.subplots(2, 2)
fig. tight_layout ()

#define subplot titles
ax[0, 0].set_title('First Subplot')
ax[0, 1].set_title('Second Subplot')
ax[1, 0].set_title('Third Subplot')
ax[1, 1].set_title('Fourth Subplot')

#display subplots 
plt.show() 

Способ решить эту проблему — увеличить отступ по высоте между подграфиками с помощью аргумента h_pad :

import matplotlib.pyplot as plt

#define subplots
fig, ax = plt.subplots(2, 2)
fig. tight_layout (h_pad= 2 )

#define subplot titles
ax[0, 0].set_title('First Subplot')
ax[0, 1].set_title('Second Subplot')
ax[1, 0].set_title('Third Subplot')
ax[1, 1].set_title('Fourth Subplot')

#display subplots 
plt.show() 

Отрегулируйте интервал общего заголовка

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

import matplotlib.pyplot as plt

#define subplots
fig, ax = plt.subplots(2, 2)
fig. tight_layout (h_pad= 2 )

#define subplot titles
ax[0, 0].set_title('First Subplot')
ax[0, 1].set_title('Second Subplot')
ax[1, 0].set_title('Third Subplot')
ax[1, 1].set_title('Fourth Subplot')

#add overall title and adjust it so that it doesn't overlap with subplot titles
fig.suptitle('Overall Title')
plt.subplots_adjust(top= 0.85 )

#display subplots 
plt.show() 

Вы можете найти больше руководств по Matplotlib здесь .