1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-matplotlib-user-guide-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
3.3.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 03:14 86b54d1

Использование 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

Чтобы использовать 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 и SubplotSpec

Можно явно создать 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, вы можете настроить параметры макета для подграфиков, созданных с помощью 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

Вы можете создать 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])

Использование SubplotSpec для создания сложных вложенных GridSpec

Вот более сложный пример вложенного gridspec, где мы скрываем соответствующие хребты внутри каждого 3x3 внутреннего grid, размещая рамку вокруг каждой ячейки 4x4 внешнего grid.

Изменение размера GridSpec с переменными размерами ячеек

Обычно 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-matplotlib-user-guide-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-matplotlib-user-guide-zh.git
oschina-mirror
wizardforcel-matplotlib-user-guide-zh
wizardforcel-matplotlib-user-guide-zh
master