创建具有不同比例的图表

Beginner

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

简介

在本实验中,你将学习如何使用 Matplotlib 在 Python 中创建具有不同比例的图表。具体来说,你将学习如何在同一坐标轴上创建两个具有不同左右比例的图表。

虚拟机提示

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

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

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

导入所需库

在开始之前,让我们导入所需的库。在本教程中,我们将使用 Matplotlib 和 NumPy。

import matplotlib.pyplot as plt
import numpy as np

创建一些模拟数据

接下来,我们将创建一些模拟数据用于绘制图表。我们将使用 numpy.arange 创建一个值数组,其范围从 0.01 到 10.0,步长为 0.01。然后,我们将使用 numpy.expnumpy.sin 创建两组数据。

## 创建一些模拟数据
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)

创建图表

现在我们已经有了数据,就可以创建图表了。我们将首先使用 matplotlib.pyplot.subplots() 创建一个坐标轴对象。然后在这个坐标轴对象上绘制第一组数据,并将标签颜色设置为红色。

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

接下来,我们将使用 ax1.twinx() 方法实例化第二个坐标轴对象,它与第一个坐标轴对象共享相同的 x 轴。然后在这个新的坐标轴对象上绘制第二组数据,并将标签颜色设置为蓝色。

ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

最后,我们将使用 fig.tight_layout() 方法调整图表的布局,并使用 matplotlib.pyplot.show() 显示它。

fig.tight_layout()
plt.show()

查看图表

花点时间查看一下创建的图表。注意两组数据在 y 轴上是如何具有不同比例的。第一组数据用红色绘制,其比例在图表的左侧,而第二组数据用蓝色绘制,其比例在图表的右侧。

总结

恭喜你!你已经学会了如何使用 Matplotlib 在 Python 中创建具有不同比例的图表。具体来说,你已经学会了如何通过使用共享相同 x 轴的两个不同坐标轴,在同一坐标轴上创建具有不同左右比例的两个图表。由于这两个坐标轴是独立的,你可以根据需要使用单独的 matplotlib.ticker 格式化器和定位器。