更改matplotlib中现有子图的子图尺寸

时间:2018-09-24 13:42:46

标签: python matplotlib

给出一个现有尺寸的子图(例如1行x 9列),如何将其更改为新的尺寸(3行x 3列的子图)。

当使用不向用户展示此控件的绘图库时,就会出现此用例(例如Nilearn.plotting.plot_prob_atlas)。据我所知,最初无法创建具有适当子图尺寸的图形。

1 个答案:

答案 0 :(得分:1)

对于不确定从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()