Температурные шкалы Фаренгейта и Цельсия

Beginner

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

Введение

Цель этого лабораторного занятия - показать, как отображать две шкалы по левому и правому вертикальным осям. В этом примере используются шкалы Фаренгейта и Цельсия. Мы будем использовать замыкание-функцию для регистрации в качестве обратного вызова для обновления второй оси в соответствии с первой осью.

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

После завершения запуска ВМ нажмите в верхнем левом углу, чтобы переключиться на вкладку Ноутбук и получить доступ к 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. Мы использовали замыкание-функцию для регистрации в качестве обратного вызова для обновления второй оси в соответствии с первой осью. Это полезно, когда мы хотим построить две группы данных с разными единицами измерения.