Использование GridSpec для настройки расположения подграфиков
Исходный текст:
Customizing Location of Subplot Using GridSpec
Оригинал: https://matplotlib.org/users/gridspec.html
Переводчик: FlyDragon
Лицензия: CC BY-NC-SA 4.0
GridSpec определяет геометрическое положение сетки, в которую будут помещены подграфики. Необходимо задать количество строк и столбцов сетки. Можно выборочно настроить параметры макета подграфика, такие как расположение слева, справа и т. д.
SubplotSpec указывает положение подграфика в заданной сетке GridSpec.
subplot2grid — вспомогательная функция, аналогичная pyplot.subplot, но использующая индексы, начинающиеся с нуля, и позволяющая подграфикам охватывать несколько ячеек.
Чтобы использовать subplot2grid, необходимо предоставить информацию о геометрии сетки и положении подграфиков в этой сетке. Для простой односеточной диаграммы подграфиков:
ax = plt.subplot2grid((2,2),(0, 0))
Это эквивалентно:
ax = plt.subplot(2,2,1)
nRow=2, nCol=2 |
---|
(0,0) +-------+-------+ |
1 |
+-------+-------+------- |
+-------+-------+------- |
Обратите внимание, что в отличие от subplot, индексы в gridspec начинаются с 0.
Для создания подграфиков, охватывающих несколько ячеек:
ax2 = plt.subplot2grid((3,3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)
Например, следующие команды:
ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)
ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)
ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3,3), (2, 0))
ax5 = plt.subplot2grid((3,3), (2, 1))
Создадут:
Можно явно создать GridSpec и использовать его для создания подграфиков. Например:
ax = plt.subplot2grid((2,2),(0, 0))
Эквивалентно:
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(2, 2)
ax = plt.subplot(gs[0, 0])
GridSpec предоставляет индексирование, подобное массиву (одномерному или двумерному), и возвращает экземпляр SubplotSpec. Например, можно использовать срезы для возврата экземпляра SubplotSpec, охватывающего несколько ячеек.
Приведённый выше пример будет выглядеть так:
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[-1,0])
ax5 = plt.subplot(gs[-1,-2])
Когда вы явно используете GridSpec, вы можете настроить параметры макета для подграфиков, созданных с помощью gridspec.
gs1 = gridspec.GridSpec(3, 3)
gs1.update(left=0.05, right=0.48, wspace=0.05)
Это похоже на subplots_adjust, но влияет только на подграфики, созданные из данного GridSpec.
Следующий код:
gs1 = gridspec.GridSpec(3, 3)
gs1.update(left=0.05, right=0.48, wspace=0.05)
ax1 = plt.subplot(gs1[:-1, :])
ax2 = plt.subplot(gs1[-1, :-1])
ax3 = plt.subplot(gs1[-1, -1])
gs2 = gridspec.GridSpec(3, 3)
gs2.update(left=0.55, right=0.98, hspace=0.05)
ax4 = plt.subplot(gs2[:, :-1])
ax5 = plt.sublot(gs2[:-1, -1])
ax6 = plt.subplot(gs2[-1, -1])
Произведёт:
Вы можете создать GridSpec из SubplotSpec, где его параметры макета установлены в соответствии с параметрами макета заданного SubplotSpec.
gs0 = gridspec.GridSpec(1, 2)
gs00 = gridspec.GridSpecFromSubplotSpec(3, 3, subplot_spec=gs0[0])
gs01 = gridspec.GridSpecFromSubplotSpec(3, 3, subplot_spec=gs0[1])
Вот более сложный пример вложенного gridspec, где мы скрываем соответствующие хребты внутри каждого 3x3 внутреннего grid, размещая рамку вокруг каждой ячейки 4x4 внешнего grid.
Обычно GridSpec создаёт сетки одинакового размера. Вы можете настроить относительную высоту и ширину строк и столбцов, при этом обратите внимание, что абсолютные значения высоты не имеют смысла, важны только их относительные соотношения.
gs = gridspec.GridSpec(2, 2,
width_ratios=[1,2],
height_ratios=[4,1]
)
ax1 = plt.subplot(gs[0])
ax2 = plt.subplot(gs[1])
ax3 = plt.subplot(gs[2])
ax4 = plt.subplot(gs[3])
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )