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

Вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Из-за ограничений Jupyter Notebook автоматизация проверки операций невозможна.
Если вы столкнетесь с какими-либо проблемами во время этого руководства, не стесняйтесь обращаться к Labby. Пожалуйста, дайте обратную связь после завершения сеанса, чтобы мы могли оперативно решить любые проблемы.
Понимание 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__}")

При запуске этого кода вы должны увидеть вывод, похожий на следующий:
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(), но улучшили график с помощью дополнительных настроек.
Понимание настроек
Разберем некоторые важные настройки, которые мы добавили:
fill_between(): Создает цветные области между кривыми синуса и косинуса.set_xticks()иset_xticklabels(): Настраивают позиции и метки делений.tight_layout(): Автоматически настраивает отступы на графике для лучшего вида.annotate(): Добавляет текст с стрелкой, указывающей на определенную точку.- Настроенные шрифты, цвета и стили для различных элементов.
Эти настройки показывают, как можно создавать визуально привлекательные и информативные графики, сохраняя при этом метки делений оси 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:
- Нажмите на логотип "Jupyter" в левом верхнем углу.
- В файловом браузере вы должны увидеть сохраненные файлы изображений.
- Нажмите на любой файл, чтобы просмотреть или скачать его.
Дополнительные параметры экспорта графиков
Для более точного контроля над сохраненным графиком вы можете настроить размер фигуры, изменить фон или изменить 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. Этот метод может быть полезен при работе с графиками, имеющими длинные метки, или когда необходимо оптимизировать использование пространства.
Мы рассмотрели следующие ключевые моменты:
- Понимание основ Matplotlib и его компонентов, включая фигуры, оси и метки делений.
- Создание простых графиков с настройками по умолчанию для наблюдения за стандартным расположением меток делений оси x.
- Использование метода
tick_params()для перемещения меток делений оси x вверх графика. - Улучшение графика с помощью дополнительных настроек, чтобы сделать его более информативным и визуально привлекательным.
- Сохранение графиков в различных форматах для обмена и публикации.
Эта информация позволяет создавать более читаемые и профессиональные визуализации, особенно при работе с сложными наборами данных или с графиками, имеющими определенные требования к макету.
Для дальнейшего изучения вы можете рассмотреть другие параметры настройки Matplotlib, такие как:
- Создание подграфиков с различными положениями меток делений.
- Настройка внешнего вида делений и меток делений (цвет, шрифт, размер и т.д.).
- Работа с различными типами графиков, такими как столбчатые диаграммы, точечные графики или гистограммы с пользовательскими положениями делений.
Гибкость Matplotlib позволяет проводить обширную настройку, чтобы удовлетворить ваши конкретные потребности в визуализации.