如何在 Matplotlib 中的子图之间共享次要 Y 轴?


要在 matplotlib 中的子图之间共享次要 Y 轴,我们可以采取以下步骤:

  • 创建用于数据点的**x**。

  • 向当前图形添加一个子图,**nrows=2**,**ncols=1**,位于**索引=1 (ax0)**

  • 使用 twinx() 方法,创建一个具有共享 X 轴但独立 Y 轴的轴副本 (ax1)。

  • 向当前图形添加一个子图,**nrows=2**,**ncols=1**,位于**索引=2 (ax2)**

  • 使用 twinx() 方法,创建一个具有共享 X 轴但独立 Y 轴的轴副本 (ax3)。

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

  • 创建具有不同颜色、x 和 y 数据点的曲线**c1**、**c2**、**c3** 和**c4**。

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

  • 要显示图形,请使用**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() # Create a twin of Axes with a shared x-axis but independent y-axis.
ax2 = plt.subplot(212)
ax3 = ax2.twinx() # Create a twin of Axes with a shared x-axis but independent y-axis.
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()

输出

更新于:2021年5月7日

3K+ 次查看

启动您的职业生涯

通过完成课程获得认证

立即开始
广告