来自matplotlib documentation:
如果图形已经有一个带有键 (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 调用生成子图后更改子图的任何属性,则不会调整唯一性。因此,只需使用原始参数和关键字,希望这会奏效。