c00*_*ter 17 geometry axes matplotlib subplot
所以在添加了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.有更简单的方法吗?
Yan*_*ann 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()
Run Code Online (Sandbox Code Playgroud)
再次调用中间的绘图,以便可以对其进行注释.
如果我使用原始调用设置背景怎么办?当我第二次获得子图时,是否需要再次设置它?
是.原始调用的参数和关键字用于创建唯一标识符.因此,为了使图形再次生成此唯一标识符,您需要再次传递相同的参数(网格定义,位置)和关键字.例如:
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()
Run Code Online (Sandbox Code Playgroud)
如果我使用 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调用生成子图后更改子图的任何属性,则不会调整唯一.所以只需使用原始参数和关键字,希望这将成功.