matplotlib 自动获取gridspec轴的尺寸或索引

velaa5lx  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(117)

给定matplotlib中的一个gridspec对象,我想自动迭代它的所有索引,这样我就可以自动添加相应的Axes,类似于:

for i, j in gspec.indices:  # whatever those indices are
    axs[i,j] = fig.add_subplot(gspec[i][j])

如果事先不知道gridspec有多少行或列,我该怎么做呢?

baubqpgj

baubqpgj1#

gspec.get_geometry()返回行数和列数。下面是一些示例代码:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(constrained_layout=True)
gspec = fig.add_gridspec(3, 4)
nrows, ncols = gspec.get_geometry()
axs = np.array([[fig.add_subplot(gspec[i, j]) for j in range(ncols)] for i in range(nrows)])
t = np.linspace(0, 4 * np.pi, 1000)
for i in range(nrows):
    for j in range(ncols):
        axs[i, j].plot(np.sin((i + 1) * t), np.sin((j + 1) * t))
plt.show()

如果axs不需要作为numpy数组,则可以省略到numpy数组的转换。

请注意,代码假设您需要在每个可能的网格位置上都有一个子图,这也可以通过fig, axs = plt.subplots(...)获得。当您想要合并网格位置以创建自定义布局时,通常会使用gridspec,如examples of the tutorial所示。

相关问题