更改matplotlib中现有子批次的子批次维度

2024-06-16 21:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

当使用不向用户公开此控件的绘图库(例如Nilearn.plotting.plot_prob_atlas)时,会出现此用例。据我所知,最初用适当的子图尺寸创建图形是不可能的。在


Tags: 用户图形plot尺寸plotting控件图库atlas
1条回答
网友
1楼 · 发布于 2024-06-16 21:07:56

我不确定是否有更好的方法来解决从尼勒恩。密谋. 在

一般来说,我们假设您有一个blackbox函数,它返回一个带有一些子图的图形。不过,您需要知道它创建的子批次的数量。 然后,您可以创建一个新网格,并将图形中轴的位置设置为新网格的位置。在

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()

相关问题 更多 >