Построение графиков с несколькими осями y с использованием Matplotlib

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

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

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

Введение

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

Советы по работе с ВМ

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

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

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

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек: Matplotlib и NumPy. Matplotlib - это библиотека для визуализации данных, а NumPy - библиотека для численного вычисления в Python.

import matplotlib.pyplot as plt
import numpy as np

Создаем объект Figure и оси

Мы создаем объект Figure и оси, который представляет собой единый график в Matplotlib.

fig, ax = plt.subplots()

Добавляем вторую ось y

Мы добавляем вторую ось y к графику с использованием метода twinx. Это создаст новую ось y справа от графика.

twin1 = ax.twinx()

Задаем позицию второй оси y

Мы задаем позицию второй оси y с использованием метода set_position. Это переместит вторую ось y справа от исходной оси y.

twin1.spines.right.set_position(("axes", 1.2))

Добавляем данные на график

Мы добавляем данные на график с использованием метода plot. Мы добавляем три линии на график, каждая с другой осью y.

p1, = ax.plot([0, 1, 2], [0, 1, 2], "C0", label="Density")
p2, = twin1.plot([0, 1, 2], [0, 3, 2], "C1", label="Temperature")
p3, = twin2.plot([0, 1, 2], [50, 30, 15], "C2", label="Velocity")

Задаем пределы и метки для осей

Мы задаем пределы и метки для каждой оси y с использованием метода set. Мы также задаем цвет меток, чтобы они совпадали с цветом линий, с использованием метода set_color.

ax.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
twin1.set(ylim=(0, 4), ylabel="Temperature")
twin2.set(ylim=(1, 65), ylabel="Velocity")

ax.yaxis.label.set_color(p1.get_color())
twin1.yaxis.label.set_color(p2.get_color())
twin2.yaxis.label.set_color(p3.get_color())

Задаем цвета делений на шкале

Мы задаем цвета делений на шкале для каждой оси y, чтобы они совпадали с цветом меток.

ax.tick_params(axis='y', colors=p1.get_color())
twin1.tick_params(axis='y', colors=p2.get_color())
twin2.tick_params(axis='y', colors=p3.get_color())

Добавляем легенду на график

Мы добавляем легенду на график с использованием метода legend. Мы передаем список объектов линий в качестве параметра handles.

ax.legend(handles=[p1, p2, p3])

Отображаем график

Мы отображаем график с использованием метода show.

plt.show()

Резюме

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