gpt4 book ai didi

geometry - 如何在Matplotlib中以编程方式选择特定子图?

转载 作者:行者123 更新时间:2023-12-03 14:11:45 26 4
gpt4 key购买 nike

因此,在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。有没有更简单的方法可以做到这一点?

最佳答案

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调用生成子图后更改了该子图的任何属性,则不会调整唯一性。因此,只需使用原始的参数和关键字,就可以解决这个问题。

关于geometry - 如何在Matplotlib中以编程方式选择特定子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com