Geometry 如何以编程方式选择Matplotlib中的特定子批次?

Geometry 如何以编程方式选择Matplotlib中的特定子批次?,geometry,matplotlib,axes,subplot,Geometry,Matplotlib,Axes,Subplot,因此,在一个图中添加了三个垂直子图,我如何选择中间的子图呢 现在我要做的是: [r[0]用于排序中的r([[ax,ax.get_geometry()[2]]用于self.figure.get_axes()],key=itemgetter(1))] 在这里,我可以用相应的轴简单地选择我想要的索引。有更直接的方法吗?来自: 如果该图已经有一个子图和键(args,kwargs),那么它只需将该子图设为当前子图并返回它 下面是一个例子: import matplotlib.pyplot as plt

因此,在一个
图中
添加了三个垂直子图,我如何选择中间的子图呢

现在我要做的是:

[r[0]用于排序中的r([[ax,ax.get_geometry()[2]]用于self.figure.get_axes()],key=itemgetter(1))]

在这里,我可以用相应的
简单地选择我想要的索引。有更直接的方法吗?

来自:

如果该图已经有一个子图和键(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会怎么样。更改几何体()

您可能会认为更改_几何体(例如,从312更改为422)会改变您使用add_子图的方式,但事实并非如此。调用change_geometry时,似乎存在错误或未定义的行为。第一个add_子批调用最初使用参数和关键字生成的唯一键不会得到更新。因此,如果希望通过add_子批调用返回axis,则需要使用原始参数和关键字调用add_子批。有关详细信息,请参阅此问题报告:


我现在的猜测是,如果在使用add_子批调用生成子批后更改子批的任何属性,则不会调整unique。所以,只需使用原始参数和关键字,希望这会成功

老兄,我花了好几个小时翻阅那些文件,但我还是忽略了那个重要的部分。谢谢我希望我能彻底理解matplotlib。这肯定会让我的工作更轻松。我也花了一段时间,从文档中挑出这些细节肯定不容易。我想看看你是否在第一次通话中通过了kwargs,你是否必须像医生建议的那样在第二次通话中完全相同地通过kwargs。如果我有任何想法,我会更新这些东西。因此,事实证明figure类有一个私有成员函数_make_key,它(生成)一个由args和kwargs组成的散列键;这用于识别子图(我猜所有轴都属于一个图形)。所以,是的,你需要精确地使用相同的参数和关键字。谢谢你的提示。我想我将不得不探索
\u make\u key
功能。我在使用
add\u subplot
获取旧的子地块时遇到一些问题,这些子地块的几何图形已通过
change\u geometry
进行了更改。因此,我猜这不是预期的行为,我已提交了一份问题报告:如果您想使用change\u geometry,您可以,但要稍后再获取子地块,您需要使用原始参数和关键字调用它。调用change_geometry时,它会更改几何体,但不会告诉地物这一点,因此地物仍然使用旧几何体为该子地块定义唯一键。add_子地块使用旧几何体再次访问它。这有意义吗?