Введение
Цель этого лабораторного занятия - показать, как отображать две шкалы по левому и правому вертикальным осям. В этом примере используются шкалы Фаренгейта и Цельсия. Мы будем использовать замыкание-функцию для регистрации в качестве обратного вызова для обновления второй оси в соответствии с первой осью.
Советы по работе с ВМ
После завершения запуска ВМ нажмите в верхнем левом углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Сначала нам нужно импортировать библиотеки numpy и matplotlib.pyplot.
import matplotlib.pyplot as plt
import numpy as np
Определяем функцию для перевода Фаренгейта в Цельсий
Далее мы определяем функцию для перевода температуры из Фаренгейта в Цельсий.
def fahrenheit2celsius(temp):
"""
Возвращает температуру в Цельсиях при заданной температуре в Фаренгейтах.
"""
return (5. / 9.) * (temp - 32)
Определяем функцию для обновления второй оси
Мы определим замыкание-функцию для регистрации в качестве обратного вызова для обновления второй оси в соответствии с первой осью.
def convert_ax_c_to_celsius(ax_f):
"""
Обновляет вторую ось в соответствии с первой осью.
"""
y1, y2 = ax_f.get_ylim()
ax_c.set_ylim(fahrenheit2celsius(y1), fahrenheit2celsius(y2))
ax_c.figure.canvas.draw()
Создаем график
Теперь мы создаем график с двумя вертикальными осями с использованием функции subplots() из matplotlib.pyplot. Также мы связываем событие ylim_changed первой оси с функцией convert_ax_c_to_celsius().
fig, ax_f = plt.subplots()
ax_c = ax_f.twinx()
ax_f.callbacks.connect("ylim_changed", convert_ax_c_to_celsius)
Строим график данных
Мы строим график данных с использованием функции plot() первой оси.
ax_f.plot(np.linspace(-40, 120, 100))
Задаем пределы осей и метки
Мы задаем пределы по оси x равными (0,100), а также метки и заголовок по осям y.
ax_f.set_xlim(0, 100)
ax_f.set_title('Two scales: Fahrenheit and Celsius')
ax_f.set_ylabel('Fahrenheit')
ax_c.set_ylabel('Celsius')
Отображаем график
Наконец, мы отображаем график с использованием функции show() из matplotlib.pyplot.
plt.show()
Резюме
В этом практическом занятии мы узнали, как отображать две шкалы по левым и правым вертикальным осям с использованием Python и Matplotlib. Мы использовали замыкание-функцию для регистрации в качестве обратного вызова для обновления второй оси в соответствии с первой осью. Это полезно, когда мы хотим построить две группы данных с разными единицами измерения.