因此,在figure
添加了三个垂直子图的情况下add_subplot
,我该如何选择让我们说中间那个?
现在我做这个列表理解:
[r[0] for r in sorted([[ax, ax.get_geometry()[2]] for ax in self.figure.get_axes()], key=itemgetter(1))]
我可以简单地选择我想要的索引,并使用相应的axes
. 有没有更直接的方法来做到这一点?
因此,在figure
添加了三个垂直子图的情况下add_subplot
,我该如何选择让我们说中间那个?
现在我做这个列表理解:
[r[0] for r in sorted([[ax, ax.get_geometry()[2]] for ax in self.figure.get_axes()], key=itemgetter(1))]
我可以简单地选择我想要的索引,并使用相应的axes
. 有没有更直接的方法来做到这一点?
如果该图已经有一个带有键 (args, kwargs) 的子图,那么它将简单地将该子图设为当前并返回它。
这是一个例子:
import matplotlib.pyplot as plt
fig = plt.figure()
for vplot in [1,2,3]:
ax = fig.add_subplot(3,1,vplot)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(3,1,2)
ax_again.annotate("The middle one",xy=(7,5),xytext=(7,5))
plt.show()
再次调用中间图以便对其进行注释。
如果我用原来的调用设置了背景,我第二次得到子图时是否需要再次设置它?
是的。原始调用的参数和关键字用于制作唯一标识符。因此,要让图形再次生成此唯一标识符,您需要再次传递相同的参数(网格定义、位置)和关键字。例如:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(2,1,1,axisbg='red')
ax.plot(range(10),range(10))
ax = fig.add_subplot(2,1,2)
ax.plot(range(10),range(10))
ax_again = fig.add_subplot(2,1,1,axisbg='red')
ax_again.annotate("The top one",xy=(7,5),xytext=(7,5))
plt.show()
如果我使用 ax_again.change_geometry()
怎么办?
您会认为 change_geometry,例如从 312 到 422,会改变您使用 add_subplot 的方式,但事实并非如此。调用 change_geometry 时似乎存在错误或未定义的行为。最初使用参数和关键字生成的唯一键不会更新到第一个 add_subplot 调用。因此,如果您想通过 add_subplot 调用获取轴,则需要使用原始参数和关键字调用 add_subplot。有关更多信息,请关注此问题报告: https ://github.com/matplotlib/matplotlib/issues/429
我现在的猜测是,如果在使用 add_subplot 调用生成子图后更改子图的任何属性,则不会调整唯一性。因此,只需使用原始参数和关键字,希望这会奏效。