带插图的 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()
我有一个非常简单的问题,但我找不到答案:
我使用 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()