Позиционирование заголовков графиков в Matplotlib

MatplotlibMatplotlibBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь размещать заголовки на графиках, созданных с использованием Matplotlib. Заголовки графиков помогают зрителям понять, какую информацию несет визуализация. Matplotlib предлагает несколько вариантов для позиционирования этих заголовков: по центру (по умолчанию), выровненные по левому краю, выровненные по правому краю или с настраиваемым вертикальным позиционированием.

К концу этого практического занятия вы сможете:

  • Создать базовый график с заголовком, выровненным по центру
  • Разместить заголовки слева или справа от графика
  • Создать график с заголовком в настраиваемой позиции
  • Использовать различные методы для настройки позиционирования заголовка

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL matplotlib(("Matplotlib")) -.-> matplotlib/AdvancedPlottingGroup(["Advanced Plotting"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlotCustomizationGroup(["Plot Customization"]) matplotlib(("Matplotlib")) -.-> matplotlib/AdvancedTopicsGroup(["Advanced Topics"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") matplotlib/AdvancedPlottingGroup -.-> matplotlib/subplots("Subplots") matplotlib/PlotCustomizationGroup -.-> matplotlib/titles_labels("Adding Titles and Labels") matplotlib/AdvancedTopicsGroup -.-> matplotlib/matplotlib_config("Customizing Matplotlib Configurations") subgraph Lab Skills matplotlib/line_plots -.-> lab-48998{{"Позиционирование заголовков графиков в Matplotlib"}} matplotlib/subplots -.-> lab-48998{{"Позиционирование заголовков графиков в Matplotlib"}} matplotlib/titles_labels -.-> lab-48998{{"Позиционирование заголовков графиков в Matplotlib"}} matplotlib/matplotlib_config -.-> lab-48998{{"Позиционирование заголовков графиков в Matplotlib"}} end

Базовое построение графиков с заголовком в позиции по умолчанию

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

Создание Jupyter Notebook

После завершения запуска виртуальной машины (VM) нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook.

click-notebook

Вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Из-за ограничений Jupyter Notebook автоматизация проверки операций невозможна.

Если вы столкнетесь с какими-либо проблемами во время практического занятия, не стесняйтесь обращаться за помощью к Labby. Пожалуйста, дайте обратную связь после завершения сессии, чтобы мы могли оперативно решить любые проблемы.

Импорт Matplotlib

Теперь начнем с импорта библиотеки Matplotlib. В первой ячейке вашего блокнота введите следующий код и запустите его, нажав Shift+Enter:

import matplotlib.pyplot as plt

Этот код импортирует модуль pyplot из Matplotlib и присваивает ему псевдоним plt, что является распространенной практикой.

Создание простого графика

Далее создадим базовый линейный график. В новой ячейке введите следующий код и запустите его:

plt.figure(figsize=(8, 5))  ## Create a figure with a specific size
plt.plot(range(10))         ## Plot numbers from 0 to 9
plt.grid(True)              ## Add a grid for better readability
plt.show()                  ## Display the plot

В выходных данных вы должны увидеть простой линейный график с значениями от 0 до 9.

line-plot

Добавление заголовка по умолчанию (выровненного по центру)

Теперь добавим заголовок к нашему графику. По умолчанию заголовок выравнивается по центру верхней части графика. В новой ячейке введите следующий код:

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('My First Matplotlib Plot')  ## Add a centered title
plt.show()
line-plot-with-title

Запустите ячейку, и вы должны увидеть график с заголовком, выровненным по центру сверху.

Функция title() без дополнительных параметров поместит заголовок в центр, что является позицией по умолчанию.

Позиционирование заголовка слева и справа

Matplotlib позволяет вам размещать заголовок слева или справа от графика с использованием параметра loc. На этом этапе вы научитесь выравнивать заголовки по левому и правому краям графиков.

Создание графика с заголовком, выровненным по левому краю

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

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Left-Aligned Title', loc='left')  ## Position the title at the left
plt.show()
left-aligned-title

Запустите ячейку. Обратите внимание, как заголовок теперь выровнен по левому краю графика, а не по центру.

Параметр loc в функции title() определяет горизонтальное положение заголовка. Установив loc='left', вы сообщаете Matplotlib разместить заголовок слева от графика.

Создание графика с заголовком, выровненным по правому краю

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

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Right-Aligned Title', loc='right')  ## Position the title at the right
plt.show()
right-aligned-title

Запустите ячейку. Теперь заголовок должен быть выровнен по правому краю графика.

Сравнение различных позиций заголовка

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

## Create a figure with 3 subplots arranged horizontally
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

## Plot 1: Center-aligned title (default)
axes[0].plot(range(10))
axes[0].grid(True)
axes[0].set_title('Center Title')

## Plot 2: Left-aligned title
axes[1].plot(range(10))
axes[1].grid(True)
axes[1].set_title('Left Title', loc='left')

## Plot 3: Right-aligned title
axes[2].plot(range(10))
axes[2].grid(True)
axes[2].set_title('Right Title', loc='right')

plt.tight_layout()  ## Adjust spacing between subplots
plt.show()
three-title-positions

Запустите ячейку, чтобы увидеть все три позиции заголовка рядом друг с другом. Это визуальное сравнение поможет вам понять, как параметр loc влияет на позиционирование заголовка.

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

Пользовательское вертикальное позиционирование заголовка

Иногда вам может понадобиться настроить вертикальное положение заголовка. На этом этапе вы научитесь вручную контролировать вертикальное (по оси y) положение заголовков графиков.

Понимание вертикального положения (y-позиции) заголовка

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

  • y = 1.0 (значение по умолчанию) размещает заголовок в верхней части графика
  • y > 1.0 размещает заголовок выше верхней части графика
  • y < 1.0 размещает заголовок ниже верхней части графика, приближая его к содержимому графика

Создание графика с пользовательской y-позицией заголовка

Создадим график с заголовком, расположенным выше положения по умолчанию. В новой ячейке введите следующий код:

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Higher Title Position', y=1.1)  ## Position the title higher
plt.show()

Запустите ячейку. Обратите внимание, как заголовок теперь расположен немного выше графика по сравнению с положением по умолчанию.

Теперь создадим график с заголовком, расположенным ниже положения по умолчанию:

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Lower Title Position', y=0.9)  ## Position the title lower
plt.show()

Запустите ячейку. Теперь заголовок должен быть расположен ближе к содержимому графика.

Сравнение различных y-позиций

Создадим несколько графиков рядом друг с другом, чтобы сравнить различные вертикальные положения заголовков:

## Create a figure with 3 subplots arranged horizontally
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

## Plot 1: Default Y-position
axes[0].plot(range(10))
axes[0].grid(True)
axes[0].set_title('Default Position (y=1.0)')

## Plot 2: Higher Y-position
axes[1].plot(range(10))
axes[1].grid(True)
axes[1].set_title('Higher Position', y=1.15)

## Plot 3: Lower Y-position
axes[2].plot(range(10))
axes[2].grid(True)
axes[2].set_title('Lower Position', y=0.85)

plt.tight_layout()  ## Adjust spacing between subplots
plt.show()

Запустите ячейку, чтобы увидеть все три вертикальные позиции рядом друг с другом. Это сравнение поможет вам понять, как параметр y влияет на вертикальное положение заголовка.

Комбинирование горизонтального и вертикального позиционирования

Вы можете комбинировать параметр loc (для горизонтального выравнивания) с параметром y (для вертикального положения), чтобы разместить заголовок именно там, где вам нужно:

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Custom Positioned Title', loc='right', y=1.1)  ## Right-aligned and higher
plt.show()

Запустите ячейку. Теперь заголовок должен быть выровнен по правому краю графика и расположен выше положения по умолчанию.

Продвинутое позиционирование заголовков при работе с подграфиками

На этом этапе вы научитесь продвинутым техникам позиционирования заголовков при работе с макетами подграфиков и объектами осей. Вы также узнаете, как использовать функцию suptitle() для добавления общего заголовка к фигуре с несколькими подграфиками.

Создание фигуры с подграфиками и индивидуальными заголовками

Создадим сетку из 2x2 подграфиков, каждый с собственным заголовком, расположенным по - разному:

## Create a figure with a 2x2 grid of subplots
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## Flatten the 2D array of axes for easier iteration
axes = axes.flatten()

## Plot data and set titles with different positions for each subplot
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)

## Top-left subplot: Default centered title
axes[0].set_title('Default (Centered)')

## Top-right subplot: Left-aligned title
axes[1].set_title('Left-Aligned', loc='left')

## Bottom-left subplot: Right-aligned title
axes[2].set_title('Right-Aligned', loc='right')

## Bottom-right subplot: Custom positioned title
axes[3].set_title('Custom Position', y=0.85, loc='center')

## Add spacing between subplots
plt.tight_layout()
plt.show()

Запустите ячейку. Вы должны увидеть четыре подграфика, каждый с заголовком, расположенным по - разному.

Добавление общего заголовка фигуры с помощью suptitle()

При работе с несколькими подграфиками вы, возможно, захотите добавить общий заголовок для всей фигуры. Это можно сделать с помощью функции suptitle():

## Create a figure with a 2x2 grid of subplots
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## Flatten the 2D array of axes for easier iteration
axes = axes.flatten()

## Plot data on each subplot
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)
    ax.set_title(f'Subplot {i+1}')

## Add an overall title to the figure
fig.suptitle('Multiple Subplots with an Overall Title', fontsize=16)

## Add spacing between subplots
plt.tight_layout()
## Add top spacing for the suptitle
plt.subplots_adjust(top=0.9)
plt.show()

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

Комбинирование заголовков осей и заголовков фигуры

Вы можете комбинировать индивидуальные заголовки подграфиков с общим заголовком фигуры:

## Create a figure with a 2x2 grid of subplots
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## Plot data on each subplot with different title positions
axes[0, 0].plot(range(10))
axes[0, 0].grid(True)
axes[0, 0].set_title('Centered Title', loc='center')

axes[0, 1].plot(range(10))
axes[0, 1].grid(True)
axes[0, 1].set_title('Left-Aligned Title', loc='left')

axes[1, 0].plot(range(10))
axes[1, 0].grid(True)
axes[1, 0].set_title('Right-Aligned Title', loc='right')

axes[1, 1].plot(range(10))
axes[1, 1].grid(True)
axes[1, 1].set_title('Lower Title', y=0.85)

## Add an overall title to the figure
fig.suptitle('Advanced Title Positioning Demo', fontsize=16)

## Add spacing between subplots
plt.tight_layout()
## Add top spacing for the suptitle
plt.subplots_adjust(top=0.9)
plt.show()

Запустите ячейку. Вы должны увидеть фигуру с четырьмя подграфиками, каждый с заголовком, расположенным по - разному, и общий заголовок вверху фигуры.

Функция suptitle() полезна для добавления основного заголовка, описывающего всю фигуру, в то время как отдельные вызовы set_title() для объектов осей добавляют более конкретные заголовки к каждому подграфику.

Глобальное позиционирование заголовков с использованием RCParams

На этом последнем этапе вы узнаете, как использовать параметры времени выполнения (RCParams) Matplotlib для установки глобальных значений по умолчанию для позиционирования заголовков. Это полезно, когда вы хотите, чтобы все графики в вашем блокноте или скрипте использовали единообразное позиционирование заголовков, не требуя его указания для каждого графика отдельно.

Понимание RCParams в Matplotlib

Поведение Matplotlib можно настроить с помощью переменной, похожей на словарь, называемой rcParams. Это позволяет вам устанавливать глобальные значения по умолчанию для различных свойств, включая позиционирование заголовков.

Установка глобального позиционирования заголовков с помощью rcParams

Установим глобальные значения по умолчанию для позиционирования заголовков, а затем создадим несколько графиков, которые автоматически будут использовать эти настройки:

## View the current default values
print("Default title y position:", plt.rcParams['axes.titley'])
print("Default title padding:", plt.rcParams['axes.titlepad'])

Запустите ячейку, чтобы увидеть значения по умолчанию. Теперь изменим эти настройки:

## Set new global defaults for title positioning
plt.rcParams['axes.titley'] = 1.05     ## Set title y position higher
plt.rcParams['axes.titlepad'] = 10     ## Set padding between title and plot
plt.rcParams['axes.titlelocation'] = 'left'  ## Set default alignment to left

## Create a plot that will use the new defaults
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('This Title Uses Global RCParams Settings')
plt.show()

Запустите ячейку. Обратите внимание, как заголовок позиционируется в соответствии с глобальными настройками, которые мы определили, даже несмотря на то, что мы не указали никаких параметров позиционирования в функции title().

Создание нескольких графиков с одинаковыми настройками

Создадим несколько графиков, все из которых будут использовать наши глобальные настройки:

## Create a figure with a 2x2 grid of subplots
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## Flatten the 2D array of axes for easier iteration
axes = axes.flatten()

## Plot data on each subplot with titles that use global settings
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)
    ax.set_title(f'Subplot {i+1} Using Global Settings')

plt.tight_layout()
plt.show()

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

Сброс RCParams до значений по умолчанию

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

## Reset to default settings
plt.rcdefaults()

## Create a plot with default settings
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('This Title Uses Default Settings Again')
plt.show()

Запустите ячейку. Теперь заголовок должен быть позиционирован с использованием значений по умолчанию Matplotlib.

Временные изменения RCParams

Если вы хотите временно изменить RCParams только для определенной части вашего кода, вы можете использовать менеджер контекста:

## Create a plot with default settings
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Default Settings')
plt.show()

## Temporarily change RCParams for just this section
with plt.rc_context({'axes.titlelocation': 'right', 'axes.titley': 1.1}):
    plt.figure(figsize=(8, 5))
    plt.plot(range(10))
    plt.grid(True)
    plt.title('Temporary Settings Change')
    plt.show()

## Create another plot that will use default settings again
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Back to Default Settings')
plt.show()

Запустите ячейку. Вы должны увидеть три графика:

  1. Первый с позиционированием заголовка по умолчанию.
  2. Второй с заголовком, выровненным по правому краю и расположенным выше (из - за временных настроек).
  3. Третий снова с позиционированием заголовка по умолчанию (так как временные настройки применялись только внутри менеджера контекста).

Этот подход позволяет вам вносить временные изменения в глобальные настройки без влияния на остальные графики.

Резюме

В этом практическом занятии (лабораторной работе) вы научились контролировать позиционирование заголовков графиков в Matplotlib:

  • Базовое позиционирование заголовков: Вы создали простые графики с центрированными заголовками, используя позиционирование по умолчанию.

  • Горизонтальное позиционирование: Вы узнали, как выравнивать заголовки по левому или правому краю графика с помощью параметра loc.

  • Вертикальное позиционирование: Вы обнаружили, как регулировать вертикальное положение заголовков с помощью параметра y, размещая их выше или ниже относительно графика.

  • Продвинутые техники с подграфиками: Вы изучили, как позиционировать заголовки на отдельных подграфиках и как добавить общий заголовок фигуры с помощью функции suptitle().

  • Глобальные настройки с использованием RCParams: Вы научились устанавливать глобальные значения по умолчанию для позиционирования заголовков с помощью параметров времени выполнения Matplotlib, обеспечивая единообразный стиль для нескольких графиков.

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

Для дальнейшего изучения попробуйте поэкспериментировать с другими параметрами настройки заголовков, такими как свойства шрифта, поворот и цвета, чтобы сделать свои визуализации еще более эффективными.