所以在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
。有没有更简单的方法呢?
答案 0 :(得分:16)
如果该图已经有一个带有键(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调用生成子图后更改子图的任何属性,则不会调整唯一属性。所以只需使用原始参数和关键字,希望这将成功。