Демонстрация паразитных осей

Beginner

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

Введение

В этом практическом занятии вы научитесь создавать паразитные оси с использованием модулей mpl_toolkits.axes_grid1.parasite_axes.HostAxes и mpl_toolkits.axes_grid1.parasite_axes.ParasiteAxes в Matplotlib. Паразитные оси делят шкалу по оси x с основной осью, но показывают другую шкалу по оси y.

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

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

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

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

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

Сначала нам нужно импортировать необходимые библиотеки. В этом практическом занятии мы будем использовать matplotlib.pyplot для построения графиков, mpl_toolkits.axes_grid1.parasite_axes.HostAxes и mpl_toolkits.axes_grid1.parasite_axes.ParasiteAxes для создания паразитных осей.

import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.parasite_axes import HostAxes

Создаем фигуру и добавляем основную ось

Мы создаем фигуру с помощью метода plt.figure(), а затем добавляем основную ось с помощью метода fig.add_axes(). Основная ось делит шкалу по оси x с паразитными осями.

fig = plt.figure()
host = fig.add_axes([0.15, 0.1, 0.65, 0.8], axes_class=HostAxes)

Создаем паразитные оси

Мы создаем две паразитные оси с помощью метода host.get_aux_axes(). Мы устанавливаем viewlim_mode=None, чтобы гарантировать, что паразитные оси имеют ту же шкалу по оси x, что и основная ось. Мы также устанавливаем sharex=host, чтобы обеспечить совместное использование шкалы по оси x.

par1 = host.get_aux_axes(viewlim_mode=None, sharex=host)
par2 = host.get_aux_axes(viewlim_mode=None, sharex=host)

Скрываем правую ось y основной оси

Мы скрываем правую ось y основной оси с помощью метода host.axis["right"].set_visible(False).

host.axis["right"].set_visible(False)

Показываем правую ось y первой паразитной оси

Мы показываем правую ось y первой паразитной оси с помощью метода par1.axis["right"].set_visible(True). Мы также устанавливаем par1.axis["right"].major_ticklabels.set_visible(True) и par1.axis["right"].label.set_visible(True), чтобы показать деление на шкале и метку правой оси y.

par1.axis["right"].set_visible(True)
par1.axis["right"].major_ticklabels.set_visible(True)
par1.axis["right"].label.set_visible(True)

Добавляем правую ось y второй паразитной оси

Мы добавляем правую ось y второй паразитной оси с помощью метода par2.axis["right2"] = par2.new_fixed_axis(loc="right", offset=(60, 0)).

par2.axis["right2"] = par2.new_fixed_axis(loc="right", offset=(60, 0))

Строим графики данных на всех осях

Мы строим графики данных на всех осях с помощью метода plot(). Мы также задаем метки и пределы для всех осей с помощью метода set().

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")

host.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
par1.set(ylim=(0, 4), ylabel="Temperature")
par2.set(ylim=(1, 65), ylabel="Velocity")

Добавляем легенду и цвета осей

Мы добавляем легенду к основной оси с помощью метода host.legend(). Мы также задаем цвет метки левой оси y основной оси, цвет метки правой оси y первой паразитной оси и цвет метки правой оси y второй паразитной оси, чтобы они соответствовали своим соответствующим линиям, с помощью методов host.axis["left"].label.set_color(p1.get_color()), par1.axis["right"].label.set_color(p2.get_color()) и par2.axis["right2"].label.set_color(p3.get_color()).

host.legend()

host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right2"].label.set_color(p3.get_color())

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

Мы отображаем график с помощью метода plt.show().

plt.show()

Резюме

В этом практическом занятии мы узнали, как создавать паразитные оси с использованием модулей mpl_toolkits.axes_grid1.parasite_axes.HostAxes и mpl_toolkits.axes_grid1.parasite_axes.ParasiteAxes в Matplotlib. Мы также узнали, как построить графики данных на паразитных осях и поделиться шкалой x с основной осью.