Data Visualization

Три эффективных способа управления размером подграфиков в Matplotlib

Spread the love

Matplotlib предоставляет мощные инструменты для создания визуализаций, а настройка размеров подграфиков — ключ к эффективной коммуникации. В этой статье рассматриваются три метода создания подграфиков с разными размерами в Matplotlib, с примерами и пояснениями для каждого.

Оглавление

Использование gridspec для гибких компоновок подграфиков

Модуль matplotlib.gridspec обеспечивает наиболее гибкий подход к созданию подграфиков разных размеров. Он позволяет определить сетку и затем назначать подграфики определенным областям этой сетки, управляя их относительными размерами с помощью height_ratios и width_ratios.


import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure(figsize=(10, 6))
gs = gridspec.GridSpec(nrows=2, ncols=2, height_ratios=[2, 1], width_ratios=[1, 2])

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])  # Занимает оба столбца

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Этот код создает сетку 2×2, где верхний ряд вдвое выше нижнего, а правый столбец вдвое шире левого. Каждый подграфик затем добавляется в свою назначенную область.

Использование gridspec_kw для лаконичного управления

Для более простых компоновок аргумент gridspec_kw в функции plt.subplots() предлагает более лаконичную альтернативу. Он напрямую интегрирует функциональность gridspec без необходимости явного создания объекта gridspec.


import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 6), gridspec_kw={'height_ratios': [2, 1], 'width_ratios': [1, 2]})

axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].plot([1, 2, 3], [6, 4, 5])
axes[1, 0].plot([1, 2, 3], [2, 4, 1])
axes[1, 1].plot([1, 2, 3], [5, 3, 1])

plt.tight_layout()
plt.show()

Это достигает того же результата, что и пример с gridspec, но с более чистым синтаксисом. Обратите внимание, что каждый подграфик здесь занимает одну ячейку; для охвата нескольких ячеек требуется более гибкий подход gridspec.

Точное размещение с помощью subplot2grid

Функция subplot2grid обеспечивает точный контроль над размещением подграфиков с помощью индексов строк и столбцов, а также атрибутов rowspan и colspan для определения размера и положения каждого подграфика в сетке.


import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 6))

ax1 = plt.subplot2grid((2, 2), (0, 0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2, 2), (0, 1), rowspan=1, colspan=2)
ax3 = plt.subplot2grid((2, 2), (1, 0), rowspan=1, colspan=2)

ax1.plot([1, 2, 3], [4, 5, 6])
ax2.plot([1, 2, 3], [6, 4, 5])
ax3.plot([1, 2, 3, 4, 5], [2, 4, 1, 3, 5])

plt.tight_layout()
plt.show()

Несмотря на свою мощь, subplot2grid может стать менее читаемым для сложных компоновок. Выберите метод, наиболее подходящий для ваших нужд: gridspec для гибкости, gridspec_kw для лаконичных простых компоновок и subplot2grid для точного управления положением отдельных подграфиков.

Не забывайте всегда использовать plt.tight_layout(), чтобы предотвратить перекрытие элементов и обеспечить чистый и профессиональный вид.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *