华氏度与摄氏度刻度

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验的目的是演示如何在左右 y 轴上显示两个刻度。此示例使用华氏度和摄氏度刻度。我们将使用一个闭包函数注册为回调,以便根据第一个轴更新第二个轴。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入必要的库

首先,我们需要导入 numpymatplotlib.pyplot 库。

import matplotlib.pyplot as plt
import numpy as np

定义一个将华氏温度转换为摄氏温度的函数

接下来,我们定义一个函数,用于将华氏温度转换为摄氏温度。

def fahrenheit2celsius(temp):
    """
    Returns temperature in Celsius given Fahrenheit temperature.
    """
    return (5. / 9.) * (temp - 32)

定义一个更新第二个轴的函数

我们将定义一个闭包函数,注册为回调函数,以便根据第一个轴更新第二个轴。

def convert_ax_c_to_celsius(ax_f):
    """
    Update second axis according to first axis.
    """
    y1, y2 = ax_f.get_ylim()
    ax_c.set_ylim(fahrenheit2celsius(y1), fahrenheit2celsius(y2))
    ax_c.figure.canvas.draw()

创建图表

现在,我们使用 matplotlib.pyplotsubplots() 函数创建一个带有两个 y 轴的图表。我们还将第一个轴的 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')

显示图表

最后,我们使用 matplotlib.pyplotshow() 函数来显示图表。

plt.show()

总结

在本实验中,我们学习了如何使用 Python 的 Matplotlib 在左右 y 轴上显示两个刻度。我们使用了一个闭包函数作为回调来根据第一个轴更新第二个轴。当我们想要绘制两组具有不同单位的数据时,这很有用。