📜  Python中的 Matplotlib.axes.Axes.twinx()(1)

📅  最后修改于: 2023-12-03 15:34:22.898000             🧑  作者: Mango

Python中的 Matplotlib.axes.Axes.twinx()

在 Matplotlib 中,有时候我们需要在同一张图中同时展示多条不同的数据线,但是它们具有不同的纵坐标范围。此时,使用 twinx() 方法可以帮助我们在同一张图中展示两个 Y 轴的数据,并且它们不会相互影响。本文将介绍 twinx() 方法的使用方法和示例。

使用方法

Axes.twinx() 方法是 matplotlib.axes.Axes 类的一个方法,因此我们需要先创建 Axes 对象。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

接着,我们可以使用 ax.twinx() 方法来创建一个与主 Y 轴对应的辅助 Y 轴。

ax2 = ax.twinx()

此时,我们就已经创建了两个 Y 轴。如果我们分别在它们上面绘制数据,我们会发现它们会覆盖在一起。

我们可以通过设置数据线的颜色、线型等来区分它们。

ax.plot(x, y1, 'r-', label='Line 1')
ax2.plot(x, y2, 'g--', label='Line 2')
示例

下面的示例展示了如何使用 twinx() 方法来显示不同范围的两个数据集。

import numpy as np
import matplotlib.pyplot as plt

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(x/10)

# 创建图形和主轴
fig, ax = plt.subplots()

# 创建辅助轴
ax2 = ax.twinx()

# 绘制主轴
ax.plot(x, y1, 'r-', label='Sine')
ax.set_xlabel('X data')
ax.set_ylabel('Sine data')
ax.tick_params(axis='y', labelcolor='r')

# 绘制辅助轴
ax2.plot(x, y2, 'g--', label='Exponential')
ax2.set_ylabel('Exponential data')
ax2.tick_params(axis='y', labelcolor='g')

# 添加图例
ax.legend(loc='upper left')
ax2.legend(loc='upper right')

# 展示图形
plt.show()

Twin Y Axes

我们可以看到,左侧 Y 轴对应的是红色数据线,范围为 -1 到 1(正弦函数的取值范围),右侧 Y 轴对应的是绿色数据线,范围是从较小的指数函数开始逐渐增长。两个 Y 轴之间没有任何干扰,数据线完全清晰可见。