📅  最后修改于: 2023-12-03 15:08:42.985000             🧑  作者: Mango
在使用 Matplotlib 绘制图表的过程中,有时需要使用两个 Y 轴。其中,一个是主要的 Y 轴,另一个则是次要的 Y 轴。而且,我们可能需要在次要的 Y 轴上添加标签。下面,我们就来介绍一下,在 Matplotlib 中如何实现这一操作。
在绘制图表之前,我们需要导入所需的库。在本例中,我们需要使用 Matplotlib 和 NumPy。
import matplotlib.pyplot as plt
import numpy as np
为了绘制图表,我们需要生成一些数据。在本例中,我们生成两个数据集,用于绘制两个函数曲线。其中,第一个函数曲线将使用主要的 Y 轴,第二个函数曲线将使用次要的 Y 轴。
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(x)
在 Matplotlib 中,我们使用 plt.subplots()
函数创建一个图表对象,并返回一个包含子图对象的元组。我们可以使用元组的第一个元素获取子图对象。在本例中,我们需要创建一个包含两个 Y 轴的子图。
# 创建子图对象
fig, ax1 = plt.subplots()
# 创建次要 Y 轴
ax2 = ax1.twinx()
我们使用 ax1
对象绘制主要的 Y 轴。在本例中,我们绘制一个正弦函数曲线,并添加 X 轴标签和 Y 轴标签。
# 绘制主要的 Y 轴
ax1.plot(x, y1, 'b-')
# 添加 X 轴标签和 Y 轴标签
ax1.set_xlabel('X')
ax1.set_ylabel('Y1', color='b')
# 设置 Y 轴颜色
ax1.tick_params('y', colors='b')
我们使用 ax2
对象绘制次要的 Y 轴。在本例中,我们绘制一个指数函数曲线,并添加 Y 轴标签。然后,我们使用 ax2
对象设置 Y 轴标签颜色和位置。
# 绘制次要的 Y 轴
ax2.plot(x, y2, 'r-')
# 添加 Y 轴标签
ax2.set_ylabel('Y2', color='r')
# 设置 Y 轴标签颜色和位置
ax2.tick_params('y', colors='r')
ax2.yaxis.set_label_position('right')
ax2.yaxis.tick_right()
最后,我们在次要的 Y 轴上添加标签。我们可以使用 ax2.text()
函数添加文本。在本例中,我们添加一个简单的文本字符串,用于表示次要 Y 轴的含义。
# 添加次要 Y 轴标签
ax2.text(10.5, 0.5, 'Exponential', color='r')
下面是完整的示例代码,其中包含了上述所有步骤。
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(x)
# 创建子图对象
fig, ax1 = plt.subplots()
# 创建次要 Y 轴
ax2 = ax1.twinx()
# 绘制主要的 Y 轴
ax1.plot(x, y1, 'b-')
# 添加 X 轴标签和 Y 轴标签
ax1.set_xlabel('X')
ax1.set_ylabel('Y1', color='b')
# 设置 Y 轴颜色
ax1.tick_params('y', colors='b')
# 绘制次要的 Y 轴
ax2.plot(x, y2, 'r-')
# 添加 Y 轴标签
ax2.set_ylabel('Y2', color='r')
# 设置 Y 轴标签颜色和位置
ax2.tick_params('y', colors='r')
ax2.yaxis.set_label_position('right')
ax2.yaxis.tick_right()
# 添加次要 Y 轴标签
ax2.text(10.5, 0.5, 'Exponential', color='r')
plt.show()
通过上述步骤,我们可以很容易地在 Matplotlib 中将 Y 轴标签添加到次要 Y 轴。只需要创建一个包含两个 Y 轴的子图对象,并使用 twinx()
函数创建次要 Y 轴。然后,我们可以使用 set_ylabel()
函数添加 Y 轴标签,并使用 text()
函数在次要 Y 轴上添加标签。