如何在 matplotlib 中将一个子图的图例复制到另一个子图

Han*_*gzu 1 python matplotlib

我正在使用 Matplotlib 绘制一些简单的图形。举例如下:

x = np.linspace(0, 5, 1000)
fig =plt.figure(figsize=(7,7))
ax  =plt.subplot(211)
ax.plot(x, np.sin(x), '-b', label='Sine')
ax.axis('equal')
leg1 = ax.legend(loc= (0.8,0.85));
leg2 = ax.legend(loc= (0.8,-0.15));
leg2.set_zorder(14)
ax.add_artist(leg1)
ax.add_artist(leg2)
ax  =plt.subplot(212)
Run Code Online (Sandbox Code Playgroud)

我想保持上部和下部子图与子图 1 具有相同的图例。

在此输入图像描述

然而,当我在第二个子图中调低顺序时leg2,它被画布覆盖。这是我的问题,有没有什么方法可以将一个子图的图例复制到另一个子图?

Imp*_*est 5

问题是第二个图例是第一个子图的一部分,而第一个子图完全位于第二个子图后面。

通常,您会将图例添加到第二个子图而不是第一个子图中。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 5, 1000)
fig =plt.figure(figsize=(7,7))
ax  =plt.subplot(211)
ax.plot(x, np.sin(x), '-b', label='Sine')

leg1 = ax.legend(loc= (0.8,0.85))

ax2  =plt.subplot(212)
leg2 = ax2.legend(*ax.get_legend_handles_labels(), loc= (0.8,0.85))


plt.show()
Run Code Online (Sandbox Code Playgroud)