Перемещение меток делений оси X вверх

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

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

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

Введение

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

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

Советы по виртуальной машине (VM)

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

click-notebook

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlotCustomizationGroup(["Plot Customization"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") matplotlib/BasicConceptsGroup -.-> matplotlib/saving_figures("Saving Figures to File") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") matplotlib/PlottingDataGroup -.-> matplotlib/fill_between("Fill Between Plots") matplotlib/PlotCustomizationGroup -.-> matplotlib/titles_labels("Adding Titles and Labels") matplotlib/PlotCustomizationGroup -.-> matplotlib/axis_ticks("Axis Ticks Customization") matplotlib/PlotCustomizationGroup -.-> matplotlib/text_annotations("Text Annotations") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/figures_axes -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/saving_figures -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/line_plots -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/fill_between -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/titles_labels -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/axis_ticks -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} matplotlib/text_annotations -.-> lab-48991{{"Перемещение меток делений оси X вверх"}} end

Понимание Matplotlib и создание ноутбука

На этом первом этапе мы узнаем о Matplotlib и создадим новый Jupyter-ноутбук для нашей задачи визуализации.

Что такое Matplotlib?

Matplotlib - это комплексная библиотека для создания статических, анимированных и интерактивных визуализаций на Python. Она предоставляет объектно-ориентированный API для встраивания графиков в приложения и широко используется для визуализации данных учеными, инженерами и аналитиками данных.

Создание нового ноутбука

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

import matplotlib.pyplot as plt
import numpy as np

## Check the Matplotlib version
print(f"NumPy version: {np.__version__}")
libraries-imported

При запуске этого кода вы должны увидеть вывод, похожий на следующий:

NumPy version: 2.0.0

Точный номер версии может отличаться в зависимости от вашей среды.

Теперь мы импортировали Matplotlib и можем использовать его. plt - это обычное сокращение для модуля pyplot, который предоставляет интерфейс, похожий на MATLAB, для создания графиков.

Создание простого графика с настройками по умолчанию

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

Понимание компонентов Matplotlib

В Matplotlib графики состоят из нескольких компонентов:

  • Figure (Рисунок): Общий контейнер для графика.
  • Axes (Система координат): Область, где данные отображаются в собственной системе координат.
  • Axis (Ось): Объекты, похожие на числовую прямую, которые определяют систему координат.
  • Ticks (Отметки): Метки на осях, обозначающие определенные значения.
  • Tick Labels (Метки делений): Текстовые метки, показывающие значение на каждой отметке.

По умолчанию метки делений по оси x отображаются в нижней части графика.

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

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

## Create a figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.sin(x)

## Plot the data
ax.plot(x, y, marker='o', linestyle='-', color='blue', label='sin(x)')

## Add a title and labels
ax.set_title('A Simple Sine Wave Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis (sin(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Notice that the x-axis tick labels are at the bottom of the plot by default.")

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

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

Перемещение меток делений оси X вверх

Теперь, когда мы понимаем, как располагаются метки делений по умолчанию, давайте переместим метки делений оси x в верхнюю часть графика.

Понимание параметров делений

Matplotlib предоставляет метод tick_params(), чтобы управлять внешним видом делений и меток делений. Этот метод позволяет нам:

  • Показывать/скрывать деления и метки делений
  • Изменять их положение (сверху, снизу, слева, справа)
  • Настраивать их размер, цвет и другие свойства

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

Создадим новый график с метками делений оси x, перемещенными вверх:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.cos(x)

## Plot the data
ax.plot(x, y, marker='s', linestyle='-', color='green', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',         ## Apply changes to the x-axis
    top=True,         ## Show ticks on the top side
    labeltop=True,    ## Show tick labels on the top side
    bottom=False,     ## Hide ticks on the bottom side
    labelbottom=False ## Hide tick labels on the bottom side
)

## Add a title and labels
ax.set_title('Cosine Wave with X-Axis Tick Labels at the Top')
ax.set_xlabel('X-axis (now at the top!)')
ax.set_ylabel('Y-axis (cos(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Now the x-axis tick labels are at the top of the plot!")

При запуске этого кода вы увидите график косинуса с метками делений оси x в верхней части графика.

Обратите внимание, как метод tick_params() используется с несколькими параметрами:

  • axis='x': Указывает, что мы хотим изменить ось x.
  • top=True и labeltop=True: Делает деления и метки делений видимыми сверху.
  • bottom=False и labelbottom=False: Скрывает деления и метки делений снизу.

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

Дальнейшая настройка графика

Теперь, когда мы переместили метки делений оси x вверх, давайте еще больше настроим наш график, чтобы сделать его более визуально привлекательным и информативным.

Продвинутые методы настройки графиков

Matplotlib предлагает множество вариантов для настройки графиков. Исследуем некоторые из них:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(10, 6))

## Generate some data with more points for a smoother curve
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot multiple datasets
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Fill the area between curves
ax.fill_between(x, y1, y2, where=(y1 > y2), alpha=0.3, color='green', interpolate=True)
ax.fill_between(x, y1, y2, where=(y1 <= y2), alpha=0.3, color='purple', interpolate=True)

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels with custom styles
ax.set_title('Sine and Cosine Functions with Customized X-Axis Labels at the Top',
             fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Angle (radians)', fontsize=12)
ax.set_ylabel('Function Value', fontsize=12)

## Add a grid and customize its appearance
ax.grid(True, linestyle='--', alpha=0.7, which='both')

## Customize the axis limits
ax.set_ylim(-1.2, 1.2)

## Add a legend with custom location and style
ax.legend(loc='upper right', fontsize=12, framealpha=0.8)

## Add annotations to highlight important points
ax.annotate('Maximum', xy=(np.pi/2, 1), xytext=(np.pi/2, 1.1),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5),
            fontsize=10, ha='center')

## Display the plot
plt.tight_layout()  ## Adjust spacing for better appearance
plt.show()

print("We have created a fully customized plot with x-axis tick labels at the top!")

При запуске этого кода вы увидите гораздо более сложный и профессионально выглядящий график с:

  • Двумя кривыми (синусом и косинусом)
  • Цветными областями между кривыми
  • Пользовательскими метками делений (с использованием обозначения π)
  • Аннотациями, указывающими на важные особенности
  • Лучшим расположением и стилем

Обратите внимание, как мы сохранили метки делений оси x вверху с помощью метода tick_params(), но улучшили график с помощью дополнительных настроек.

Понимание настроек

Разберем некоторые важные настройки, которые мы добавили:

  1. fill_between(): Создает цветные области между кривыми синуса и косинуса.
  2. set_xticks() и set_xticklabels(): Настраивают позиции и метки делений.
  3. tight_layout(): Автоматически настраивает отступы на графике для лучшего вида.
  4. annotate(): Добавляет текст с стрелкой, указывающей на определенную точку.
  5. Настроенные шрифты, цвета и стили для различных элементов.

Эти настройки показывают, как можно создавать визуально привлекательные и информативные графики, сохраняя при этом метки делений оси x вверху.

Сохранение и обмен графиком

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

Сохранение графиков в различных форматах

Matplotlib позволяет сохранять графики в различных форматах, включая PNG, JPG, PDF, SVG и другие. Давайте узнаем, как сохранить наш график в разных форматах:

## Create a plot similar to our previous customized one
fig, ax = plt.subplots(figsize=(10, 6))

## Generate data
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot the data
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels
ax.set_title('Plot with X-Axis Labels at the Top', fontsize=14)
ax.set_xlabel('X-axis at the top')
ax.set_ylabel('Y-axis')

## Add grid and legend
ax.grid(True)
ax.legend()

## Save the figure in different formats
plt.savefig('plot_with_top_xlabels.png', dpi=300, bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.pdf', bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.svg', bbox_inches='tight')

## Show the plot
plt.show()

print("The plot has been saved in PNG, PDF, and SVG formats in the current directory.")

При запуске этого кода график будет сохранен в трех различных форматах:

  • PNG: Растровый формат изображения, подходящий для веб-страниц и общего использования.
  • PDF: Векторный формат, идеальный для публикаций и отчетов.
  • SVG: Векторный формат, отлично подходящий для веб-страниц и редактируемых графиков.

Файлы будут сохранены в текущем рабочем каталоге вашего Jupyter-ноутбука.

Понимание параметров сохранения

Рассмотрим параметры, используемые с savefig():

  • dpi=300: Устанавливает разрешение (точек на дюйм) для растровых форматов, таких как PNG.
  • bbox_inches='tight': Автоматически настраивает границы фигуры так, чтобы включить все элементы без лишнего белого пространства.

Просмотр сохраненных файлов

Вы можете просмотреть сохраненные файлы, перейдя в файловый браузер в Jupyter:

  1. Нажмите на логотип "Jupyter" в левом верхнем углу.
  2. В файловом браузере вы должны увидеть сохраненные файлы изображений.
  3. Нажмите на любой файл, чтобы просмотреть или скачать его.

Дополнительные параметры экспорта графиков

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

## Control the background color and transparency
fig.patch.set_facecolor('white')  ## Set figure background color
fig.patch.set_alpha(0.8)          ## Set background transparency

## Save with custom settings
plt.savefig('custom_background_plot.png',
            dpi=400,              ## Higher resolution
            facecolor=fig.get_facecolor(),  ## Use the figure's background color
            edgecolor='none',     ## No edge color
            bbox_inches='tight',  ## Tight layout
            pad_inches=0.1)       ## Add a small padding

print("A customized plot has been saved with specialized export settings.")

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

Резюме

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

Мы рассмотрели следующие ключевые моменты:

  1. Понимание основ Matplotlib и его компонентов, включая фигуры, оси и метки делений.
  2. Создание простых графиков с настройками по умолчанию для наблюдения за стандартным расположением меток делений оси x.
  3. Использование метода tick_params() для перемещения меток делений оси x вверх графика.
  4. Улучшение графика с помощью дополнительных настроек, чтобы сделать его более информативным и визуально привлекательным.
  5. Сохранение графиков в различных форматах для обмена и публикации.

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

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

  • Создание подграфиков с различными положениями меток делений.
  • Настройка внешнего вида делений и меток делений (цвет, шрифт, размер и т.д.).
  • Работа с различными типами графиков, такими как столбчатые диаграммы, точечные графики или гистограммы с пользовательскими положениями делений.

Гибкость Matplotlib позволяет проводить обширную настройку, чтобы удовлетворить ваши конкретные потребности в визуализации.