Автор оригинала: Team Python Pool.
Здравствуйте программисты, в сегодняшней статье мы обсудим Matplotlib tight_layout в Python. Библиотека Matplotlib в Python – это численно- математическое расширение для библиотеки NumPy. Модуль Pyplot-это основанный на состоянии интерфейс библиотеки Matplotlib, который предоставляет функции, подобные MATLAB. Различные графики, которые могут быть использованы в Pyplot, – это Линейный график, Контур, гистограмма, Разброс, 3D-график и т. Д.
Matplotlib tight_layout автоматически настраивает подзаголовок таким образом, чтобы он вписывался в область рисунка. Это экспериментальная функция, и она может не всегда работать. Он проверяет только экстенты тиковых меток, меток осей и заголовков. Эта функция позволяет создавать динамические графики, которые можно использовать на любом устройстве. Прежде чем мы приведем примеры для Matplotlib tight_layout, позвольте мне кратко ознакомить вас с тем же синтаксисом и параметрами.
Синтаксис Matplotlib tight_layout в Python
Параметры Matplotlib tight_layout
- pad: Отступ между краем рисунка и краями подзаголовков, как дробь, т. е. плавающее значение размера шрифта. h_pad, w_pad: Заполнение (высота/ширина) между краями соседних подзаголовков в виде дроби, т. е. поплавка размера шрифта. По умолчанию используется pad. (Необязательно) rect: Кортеж (left, bottom, right, top) представляет собой прямоугольник (left, bottom, right, top) в нормализованной координате фигуры, в который будет помещаться вся область подзаголовков (включая метки). По умолчанию это (0, 0, 1, 1).
Возвращаемый тип Matplotlib tight_layout
Этот метод не возвращает никакого значения. Функция Matplotlib tight_layout настраивает подзаголовок таким образом, чтобы он вписывался в область рисунка.
Пример Matplotlib tight_plot в Python
import numpy as np import matplotlib.pyplot as plt fig,.subplots(1, 2) .arange(0.0, 2.0, 0.02) .sin(2 * np.pi * x) .exp(-x) [0].plot(x, y1) [0].plot(x, y2,) .sin(4 * np.pi * x) .exp(-2 * x) [1].plot(x, y3,) [1].plot(x, y4,,) fig.legend((l1, l2), ('Line 1', 'Line 2'), 'upper left') fig.legend((l3, l4), ('Line 3', 'Line 4'), 'upper right') fig.suptitle('matplotlib.pyplot.tight_layout() Example') plt.tight_layout() plt.show()
Выход:
Объяснение:
В matplotlib python расположение осей, включая подзаголовки, задается в нормализованных координатах фигуры. Может случиться так, что ваши метки осей или заголовки, а иногда даже тиковые метки выходят за пределы области рисунка и, таким образом, обрезаются. Таким образом, чтобы предотвратить это, расположение осей должно быть скорректировано. Matplotlib вводит новую команду tight_layout (), которая делает это автоматически для вас. Для того, чтобы выполнить эту корректировку каждый раз, когда фигура перерисовывается. Вы можете вызвать fig.set_tight_layout(True) или, что то же самое, установить figure.autolayout rcParam в True. В случае нескольких подзаголовков часто вы видите метки разных осей, перекрывающие друг друга. Функция Matplotlib tight_layout() также будет регулировать расстояние между подзаголовками, чтобы минимизировать перекрытия. В этом примере вызывается функция tight_plot, которая настраивает метки и заголовки рисунка вместо того, чтобы обрезать их.
Matplotlib tight_layout с использованием GridSpec
import matplotlib.gridspec as gridspec plt.close('all').figure() .GridSpec(2, 1).add_subplot(gs1[0]).add_subplot(gs1[1]) example_plot(ax1) example_plot(ax2) gs1.tight_layout(fig, rect=[0, 0, 0.5, 1])
Выход:
Объяснение:
GridSpec имеет свой собственный метод tight_layout(). pyplot API tight_layout() также работает. Вы можете предоставить необязательный rect href="https://en.wikipedia.org/wiki/Parameter_(computer_programming)#:~:text=From%20Wikipedia%2C%20the%20free%20encyclopedia,as%20input%20to%20the%20subroutine.">parameter, который определяет ограничивающую рамку, в которую будут помещены подзаголовки. Координаты должны быть в нормализованных координатах фигуры и по умолчанию (0, 0, 1, 1). Регулировка верха и низа также может потребовать регулировки hspace. Чтобы обновить hspace & vspace, мы снова вызываем tight_layout() с обновленным аргументом rect. Обратите внимание, что аргумент rect указывает область, включающую метки тиков и т. Д. href="https://en.wikipedia.org/wiki/Parameter_(computer_programming)#:~:text=From%20Wikipedia%2C%20the%20free%20encyclopedia,as%20input%20to%20the%20subroutine.">parameter, который определяет ограничивающую рамку, в которую будут помещены подзаголовки. Координаты должны быть в нормализованных координатах фигуры и по умолчанию (0, 0, 1, 1). Регулировка верха и низа также может потребовать регулировки hspace. Чтобы обновить hspace & vspace, мы снова вызываем tight_layout() с обновленным аргументом rect. Обратите внимание, что аргумент rect указывает область, включающую метки тиков и т. Д.
Matplotlib tight_layout с легендами и аннотациями
import matplotlib.gridspec as gridspec plt.close('all').figure() fig,.subplots(figsize=(4, 3)).plot(range(10),) ax.legend(bbox_to_anchor=(0.7, 0.5),,) fig.tight_layout() plt.show()
Выход:
Объяснение:
В предварительной версии Matplotlib 2.2 легенды и аннотации были исключены из расчетов ограничивающего прямоугольника, которые определяют макет. Впоследствии они были добавлены в расчет, но иногда включать их нежелательно. Однако в этом случае было бы неплохо, чтобы оси немного уменьшились, чтобы освободить место для легенды.
Должен Читать
Работа с текстом Matplotlib в PythonMatplotlib Figsize | Изменение размера графика с помощью функции FigsizeMatplotlib Arrow() С примерамиКак очистить график в Matplotlib С помощью метода clear()
Вывод
В этой статье мы обсудили различные способы реализации Matplotlib tight_layout в Python. Мы научились использовать функцию tight_layout с gridspec, легендами и аннотациями. Вы также можете использовать tight_layout вместе с цветными полосами, которые настраивают его так, чтобы он вписывался в график рисунка. Обратитесь к этой статье в случае каких-либо сомнений относительно Matplotlib teaught_layout.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Счастливого Пифонирования!