带插图的 Matplotlib 图:在原点轴上制作图例

Matlplotlib plot with inset: make legend in original axis

我有一个非常简单的问题,但我找不到答案:

我使用 matplotlib 在主图中绘制一些内容,然后使用例如

在插图中绘制其他内容
a = plt.axes([.2, .64, .28, .24])

但之后我又想在主线剧情中画一个图例(因为图例中包含了在此期间发现的东西)。

我该怎么做?至于我如何回到原始情节并制作图例?

我尝试了不同的方法,包括 sca,但没有任何效果。

plt.sca(main_ax) 应该有效。请注意,如果您没有为 curve/plot/etc 指定标签,那么如果您只调用 plt.legend(),则不会显示该标签。 (相反,您需要执行 plt.legend([line], [label]),或者更好的方法是调用 plot(x, y, label='some label')。)

但是,最好换一种方式来解决这个问题。

这就是为什么您会经常看到人们建议避免使用 pyplot 界面并改用 Axes/Figure 方法的众多原因之一。它非常清楚您在哪个轴上操作。

例如:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10), label='Curve 1')

inset = fig.add_axes([.2, .64, .28, .24])
inset.scatter(range(3), range(3))

ax.legend()

plt.show()