Python 更改matplotlib中现有子批次的子批次尺寸

Python 更改matplotlib中现有子批次的子批次尺寸,python,matplotlib,Python,Matplotlib,给定某个维度的子批次的现有图形(例如,1行x 9列),如何将其更改为新维度(3行x 3列的子批次) 当使用不向用户公开此控件的打印库(例如)时,会出现此用例。据我所知,最初创建具有适当子地块尺寸的图形是不可能的。我不确定是否有更好的方法来解决从nilearn.plotting中创建子地块的具体问题 一般来说,让我们考虑一个黑箱函数,它返回一个带有一些子图的图形。不过,您需要知道它创建的子地块的数量。 然后,可以创建一个新栅格,并将图形中轴的位置设置为该新栅格的位置 import matplotl

给定某个维度的子批次的现有图形(例如,1行x 9列),如何将其更改为新维度(3行x 3列的子批次)


当使用不向用户公开此控件的打印库(例如)时,会出现此用例。据我所知,最初创建具有适当子地块尺寸的图形是不可能的。

我不确定是否有更好的方法来解决从nilearn.plotting中创建子地块的具体问题

一般来说,让我们考虑一个黑箱函数,它返回一个带有一些子图的图形。不过,您需要知道它创建的子地块的数量。 然后,可以创建一个新栅格,并将图形中轴的位置设置为该新栅格的位置

import matplotlib.pyplot as plt
import matplotlib.gridspec
import numpy as np

# blackbox function that returns a figure with 9 subplots in a row
def blackbox():
    fig, axes = plt.subplots(ncols=9)
    for ax in axes:
        a = np.random.rand(10,10)
        ax.pcolormesh(a, vmin=0, vmax=1)
    return fig


fig = blackbox()

gs = matplotlib.gridspec.GridSpec(3,3)
for i, ax in enumerate(fig.axes):
    ax.set_position(gs[i].get_position(fig))

plt.show()

nilearn.plotting.plot\u prob\u atlas
有一个参数
axes
。这是否不允许以所需的方式自定义输出?如果真的没有,一个显示不希望出现的行为的代码样本肯定会有用。理想情况下,我会感兴趣的是,如上所述,在事后重新塑造子地块,而不是挖掘plot_prob_atlas的内部,这不会推广到另一个问题。但是这里有一些关于我的特殊问题的细节:nilearn.plotting确实接受一个轴,所以我尝试将一个子图初始化为适当的大小,并通过传递适当的ax逐个打印每个切片。这种方法挂起,但即使它确实起作用,由于多次调用,切片之间也没有颜色对应(区域1在一个切片中可能是蓝色的,在另一个切片中可能是红色的)。谢谢你的帮助!