如何在 Matplotlib 中将子图共享为辅助 Y 轴?

matplotlibserver side programmingprogramming更新于 2025/7/4 10:37:17

要在 Matplotlib 中将子图共享为辅助 Y 轴,我们可以执行以下步骤 −

  • 为数据点创建 x 。

  • 在当前图形中添加一个子图,其 nrows=2、ncols=1,位于 index=1 (ax0)

  • 使用 twinx() 方法创建一个共享 X 轴但独立于 Y 轴 (ax1) 的坐标轴孪生。

  • 在当前图形中添加一个子图,其 nrows=2、ncols=1,位于 index=2 (ax2)

  • 使用 twinx() 方法,创建共享 X 轴但 Y 轴独立的坐标区 (ax3)。

  • 使用 get_shared_y_axes()  方法,返回 Y 轴的共享坐标区 Grouper  对象的引用。

  • 创建曲线 c1、c2、c3 和 c4,分别使用不同的颜色、x 和 y 数据点。

  • 要将图例框移动到图形的左上角,请使用 legend  方法和 bbox_to_anchor

  • 要显示图形,请使用 show() 方法。

示例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-2, 2, 10)
ax0 = plt.subplot(211)
ax1 = ax0.twinx() # 创建两个轴的孪生子,它们共享 x 轴,但 y 轴相互独立。
ax2 = plt.subplot(212)
ax3 = ax2.twinx() # 创建两个轴的孪生子,它们共享 x 轴,但 y 轴相互独立。
ax1.get_shared_y_axes().join(ax1, ax3)
c1, = ax0.plot(x, np.sin(x), c='red')
c2, = ax1.plot(x, np.cos(x), c='blue')
c3, = ax2.plot(x, np.tan(x), c='green')
c4, = ax3.plot(x, np.exp(x), c='yellow')
plt.legend([c1, c2, c3, c4], ["y=sin(x)", "y=cos(x)", "y=tan(x)", "y=exp(x)"],
loc = "upper left", bbox_to_anchor=(.070, 2.25))
plt.show()

输出


相关文章