使用 Matplotlib 创建双轴图表

PythonPythonBeginner
立即练习

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

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

简介

本教程将指导你完成使用 Matplotlib 创建简单图表的步骤,Matplotlib 是一个用于数据可视化的 Python 库。我们将使用host_subplot模块创建一个带有两个 y 轴的图表。

虚拟机使用提示

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

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

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

导入必要的模块

第一步是导入绘制图表所需的必要模块。我们将使用numpy生成 x 和 y 数据,使用matplotlib.pyplot创建图表,并使用mpl_toolkits.axes_grid1创建第二个 y 轴。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import host_subplot

生成数据

接下来,我们需要生成 x 和 y 数据。在这个例子中,我们将生成一个正弦波。

xx = np.arange(0, 2*np.pi, 0.01)
yy = np.sin(xx)

创建图表

现在我们可以使用host_subplot函数来创建图表。这个函数会创建一个带有两个 y 轴的子图。

ax = host_subplot(111)
ax.plot(xx, yy)

创建第二个 y 轴

要创建第二个 y 轴,我们需要使用twin函数创建一个新的轴对象。

ax2 = ax.twin()

设置第二个 y 轴的刻度标签

我们可以使用set_xticks函数来设置第二个 y 轴的刻度标签,并将刻度位置和标签作为参数传入。

ax2.set_xticks([0.,.5*np.pi, np.pi, 1.5*np.pi, 2*np.pi],
               labels=["$0$", r"$\frac{1}{2}\pi$",
                       r"$\pi$", r"$\frac{3}{2}\pi$", r"$2\pi$"])

隐藏右侧 y 轴的刻度标签

我们可以使用major_ticklabels.set_visible函数来隐藏右侧 y 轴的刻度标签。

ax2.axis["right"].major_ticklabels.set_visible(False)

显示顶部 y 轴的刻度标签

我们可以使用相同的major_ticklabels.set_visible函数来显示顶部 y 轴的刻度标签。

ax2.axis["top"].major_ticklabels.set_visible(True)

显示图表

最后,我们可以使用show函数来显示我们的图表。

plt.show()

总结

在本教程中,我们学习了如何使用 Matplotlib 创建一个带有两个 y 轴的简单图表。我们使用host_subplot模块来创建图表,并使用mpl_toolkits.axes_grid1模块来创建第二个 y 轴。我们使用numpy生成数据,并使用matplotlib.pyplot显示图表。